So erstellen Sie die Migrationen bei Datenbank-views, die mit Hilfe von php artisan in Laravel?
Tatsächlich, ich habe es geschafft, erstellen Sie eine sql-Ansichten für Laravel mit PHP Artisan mit unten Schritt.
Schritt 1. Führen Sie die unten Befehl:
php artisan make:migration create_overall_report_views
Schritt 2.
Öffnen Sie die migration-Datei und fügen Sie den folgenden code:
class CreateOverallReportView extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
DB::statement("
CREATE VIEW views_overall_report AS
(
SELECT er.user_id as user_id, e.id AS entities_id,
c.status_id AS status_id, s.name AS status_name
FROM `user_roles` er
LEFT JOIN elists e ON e.id=er.entities_id
LEFT JOIN `clists` c ON c.id=e.checklists_id
LEFT JOIN `status` s ON s.id = c.overall_status_id
WHERE s.slug = 'completed'
AND c.deleted_at IS NULL
)
");
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::statement('DROP VIEW IF EXISTS views_overall_report');
}
}
Schritt 3. Zum aufrufen und ausführen der SQL-Ansichten über Laravel-Abfrage
$items = $DB::table('views_overall_report')
->select('status_id', 'status_name',
$DB::raw('count(entities_id) as counts')
)
->groupBy('status_id')
->orderBy('counts' , 'desc')
->whereIn('user_id', Auth::user()->id())
->get();
print_r($items);
Hoffe, das hilft. Bitte lassen Sie mich wissen, wenn jemand hat eine bessere Lösung!!!!
- laravel.com/docs/master/migrations
- wie ist die Verknüpfung der Dokumentation helfen.
- Der Blick auf die Geschichte für die post, zunächst er konnte nicht finden Sie in der Dokumentation, daher habe ich es gepostet in einem Kommentar (im Gegensatz zu der Veröffentlichung als eine tatsächliche Antwort). Sie können die Flagge ist mein Kommentar obsolet.
- Ich habe dies getan, bevor. Sie können tatsächlich machen normalen Eloquent-Modell direkt mit der Ansicht. php artisan Hersteller:Modell ViewOverallReport. Dann können Sie einfach $v = ViewOverallReport::all() als Beispiel für den Einsatz in controller
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin auf das gleiche Problem und die Lösung gefunden @ http://programmingarehard.com/2013/11/10/eloquent_and_views.html/
Können Sie auch versuchen, diese DB: die Verbindung()->getPdo()->exec("Ihre sql-Abfrage"); funktioniert es
Habe ich ein Paket zum erstellen, umbenennen und löschen von Ansichten:
https://github.com/staudenmeir/laravel-migration-views
Können Sie einen Abfrage-generator-Instanz oder eine SQL-Zeichenfolge:
Verwenden Sie die laravel eloquent eine erstellen, die die Beziehung zwischen den im Modell.
Zumbeispiel:
Wenn Sie 2-Tisch (Rollen , Benutzer) und die Beziehung zwischen Ihnen ist, viele zu viele, die Sie erstellen müssen um die model-Rolle und Benutzer nach, dass im Vorbild schreiben Sie den folgenden code:
public function Benutzer()
{
return $this->belongaToMany('App/User');
}
als auch im Benutzer-Modell:
danach erstellen Sie eine neue migration und setzen Sie den Namen der Tabelle role_user und setzen Sie den code unten in dieser:
Speichern und ausführen von php artisan migrate.
Fertig und jetzt haben Sie viele zu viele Beziehung.
Nach all diesem für geting Abfrage zumbeispiel für bezogene Rolle zu einem Benutzer hinzufügen die Benutzer-und Rollenmodell für Ihre controler eine wie das tun:
auf und zeigen die ausgewählte Rollen in Ihre anzeigen schreiben:
Fertig.