Im Laravel 4-Handbuch geht es darum, rohe Befehle wie folgt auszuführen:
DB::select(DB::raw('RENAME TABLE photos TO images'));
edit: Ich habe das gerade in der Laravel 4-Dokumentation gefunden, was wahrscheinlich besser ist:
DB::statement('drop table users');
Update: In Laravel 4.1 (möglicherweise 4.0 - ich bin mir nicht sicher) können Sie dies auch für eine rohe Where-Abfrage tun:
$users = User::whereRaw('age > ? and votes = 100', array(25))->get();
Weiteres Update Wenn Sie speziell eine Tabellenumbenennung durchführen möchten - dafür gibt es einen Schemabefehl -, lesen Sie dazu die Antwort von Mike weiter unten.
Schema::rename($from, $to)
, wie von mir, @ trm42 und @Mike Branski erwähnt? Bitte erwägen Sie, es zu ändern, um anderen Zuschauern eine aktuelle Antwort zu geben.I'd also like to know how to run a raw SQL
- also ist meine Antwort für diesen Teil. Sie haben Recht, dass dieSchema::rename()
Funktion für den speziellen Fall der Umbenennung von Tabellen nützlich ist.Tatsächlich verfügt Laravel 4 über eine Funktion zum Umbenennen von Tabellen in Illuminate / Database / Schema / Builder.php , die derzeit nur nicht dokumentiert ist :
Schema::rename($from, $to);
.quelle
Sie können auch
DB::unprepared
fürALTER TABLE
Abfragen verwenden.DB::unprepared
ist für Abfragen wie gedachtCREATE TRIGGER
. Im Wesentlichen werden jedoch SQL-Rohabfragen direkt ausgeführt. (ohne Verwendung von PDO-prepared
Anweisungen)https://github.com/laravel/framework/pull/54
quelle
DB::query("SET foreign_key_checks=0")
;SET
Abfragen . MitDB::query
(PDO::query
) wird jedoch unnötigerweise eine vorbereitete Anweisung erstellt, da die obige Abfrage keine Variable enthält.Der beste Weg, dies zu tun, habe ich bisher gefunden, um Schritt Laravel zu umgehen und die Abfrage direkt mit dem Pdo-Objekt auszuführen.
Beispiel
Normalerweise finde ich es für eine einmalige Abfrage schneller und effizienter, einfach mein Datenbankabfragetool zu öffnen und die Abfrage mit vollständiger Syntaxprüfung einzugeben und dann direkt auszuführen.
Dies ist wichtig, wenn Sie mit gespeicherten Prozeduren arbeiten oder Datenbankfunktionen verwenden müssen
Beispiel 2 Setzen Sie "created_at" auf den Wert, den Sie benötigen, und lassen Sie die Kohlenstoff-Funkiness auf der Seite sinken
$sql = 'UPDATE my_table SET updated_at = FROM_UNIXTIME(nonce) WHERE id = ' . strval($this->id); DB::statement($sql);
Ich fand, dass dies in einem Controller funktionierte, aber nicht in einer Migration
quelle
DB::connection()->getPdo()->exec('USE '.$dbConfig['database']);
. Ich habe die Datenbank in einem Laravel-Befehl gelöscht und neu erstellt und musste dies tun.Die akzeptierte Methode zum Umbenennen einer Tabelle in Laravel 4 ist die Verwendung des Schema-Generators. Sie möchten also Folgendes tun:
Schema::rename('photos', 'images');
Von http://laravel.com/docs/4.2/schema#creating-and-dropping-tables
Wenn Sie wirklich selbst eine unformatierte SQL-Abfrage schreiben möchten, können Sie immer Folgendes tun:
DB::statement('alter table photos rename to images');
Hinweis: Laravel der DB - Klasse unterstützt auch rohe SQL läuft
select
,insert
,update
, unddelete
Abfragen, wie zB:$users = DB::select('select id, name from users');
Weitere Informationen finden Sie unter http://laravel.com/docs/4.2/database#running-queries .
quelle
Dies ist mein vereinfachtes Beispiel, wie man RAW SELECT ausführt, Ergebnisse abruft und auf die Werte zugreift.
$res = DB::select(' select count(id) as c from prices p where p.type in (2,3) '); if ($res[0]->c > 10) { throw new Exception('WOW'); }
Wenn Sie nur ein SQL-Skript ohne Rückgabe ausführen möchten, verwenden Sie dies
DB::statement('ALTER TABLE products MODIFY COLUMN physical tinyint(1) AFTER points;');
Getestet in Laravel 5.1
quelle
Laravel raw sql - Abfrage einfügen :
Erstellen Sie einen Get-Link zum Einfügen von Daten, auf die über die URL zugegriffen werden kann. Unser Linkname lautet also 'insertintodb' und innerhalb dieser Funktion verwenden wir die db-Klasse. Die Datenbankklasse hilft uns bei der Interaktion mit der Datenbank. wir us db Klasse statische Funktion einfügen. Innerhalb der Einfügefunktion schreiben wir unsere PDO-Abfrage, um Daten in die Datenbank einzufügen. In der folgenden Abfrage werden 'mein Titel' und 'mein Inhalt' als Daten in die Beitragstabelle eingefügt.
Fügen Sie den folgenden Code in Ihre web.php-Datei im Routenverzeichnis ein:
Route::get('/insertintodb',function(){ DB::insert('insert into posts(title,content) values (?,?)',['my title','my content']); });
Feuern Sie jetzt über der Abfrage des Browser-Links unten ab:
Sie können die Ausgabe der obigen Einfügeabfrage sehen, indem Sie in Ihre Datenbanktabelle gehen. Sie finden einen Datensatz mit der ID 1.
Laravel raw sql - Abfrage lesen:
Erstellen Sie jetzt einen Get-Link zum Lesen von Daten, auf den über die URL zugegriffen werden kann. Unser Linkname lautet also 'readfromdb'. wir uns db Klasse statische Funktion lesen. Innerhalb der Lesefunktion schreiben wir unsere PDO-Abfrage, um Daten aus der Datenbank zu lesen. In der folgenden Abfrage werden die Daten der ID '1' aus der Beitragstabelle gelesen.
Fügen Sie den folgenden Code in Ihre web.php-Datei im Routenverzeichnis ein:
Route::get('/readfromdb',function() { $result = DB::select('select * from posts where id = ?', [1]); var_dump($result); });
Jetzt oben Feuer lesen Abfrage vom Browser-Link unten:
quelle