rephluX
Ensign
- Registriert
- Okt. 2007
- Beiträge
- 169
Nabend Forum!
Vielleicht hat hier ja jemand einen Tipp für mich
Also, zuerst, hab ich eine klassische Many-To-Many Beziehung mit einer Pivot Tabelle:
projects
+ id
+ title
+ slug
+ ...
tags
+ id
+ key
+ name
project_title
+ project_id
+ tag_id
Also m Projekte sind n Tags zugeordnet.
So, die beiden Models für die Projekte und Tags sehen so aus: http://paste.laravel.com/T5t
Und jetzt die wichtige Frage: Ich möchte eine Suche nach einem bestimmten Tag machen und die entsprechenden Projekte filtern. Also alle Projekte, denen der Tag 'abc' zugeordnet ist. Und das würde ich gern, sofern möglich, wie meine anderen Queries mit Eloquent realisieren.
Um alle Projekte anzuzeigen, benutze ich folgendes Statement:
Wobei live() und latest() jeweils nur zwei scopeMethoden sind, um nicht jedesmal die selben Where- und Order-Bedinungen zu bauen.
Mit mit Query-Bilder bekomm ich das natürlich hin:
Erfüllt natürlich seinen Zweck, aber da ich ja das Framework lernen will, würd ich wissen, ob und wenn ja wie es mit Eloquent funktioniert.
Ich hab natürlich schon rumgesucht, aber nichts gefunden, was funktioniert. Ich muss dazu sagen, dass ich auch noch relativ neu in der Laravel-Welt bin. Im Laravel-Forum hab ich die Frage auch schon gestellt, aber bisher leider keine brauchbare Antwort bekommen.
Vielleicht sind hier ja Laravel-Profis unterwegs und können weiterhelfen!
Bedankt!
reph
Vielleicht hat hier ja jemand einen Tipp für mich

Also, zuerst, hab ich eine klassische Many-To-Many Beziehung mit einer Pivot Tabelle:
projects
+ id
+ title
+ slug
+ ...
tags
+ id
+ key
+ name
project_title
+ project_id
+ tag_id
Also m Projekte sind n Tags zugeordnet.
So, die beiden Models für die Projekte und Tags sehen so aus: http://paste.laravel.com/T5t
Und jetzt die wichtige Frage: Ich möchte eine Suche nach einem bestimmten Tag machen und die entsprechenden Projekte filtern. Also alle Projekte, denen der Tag 'abc' zugeordnet ist. Und das würde ich gern, sofern möglich, wie meine anderen Queries mit Eloquent realisieren.
Um alle Projekte anzuzeigen, benutze ich folgendes Statement:
PHP:
$projects = Project::live()->latest()->get();
Wobei live() und latest() jeweils nur zwei scopeMethoden sind, um nicht jedesmal die selben Where- und Order-Bedinungen zu bauen.
Mit mit Query-Bilder bekomm ich das natürlich hin:
PHP:
$projects = DB::table('projects')
->join('project_tag', 'projects.id', '=', 'project_tag.project_id')
->join('tags', 'tags.id', '=', 'project_tag.tag_id')
->where('tags.key', '=', $value)
->where('projects.is_online', '=', 1)
->orderBy('projects.ranking', 'desc')->get();
Erfüllt natürlich seinen Zweck, aber da ich ja das Framework lernen will, würd ich wissen, ob und wenn ja wie es mit Eloquent funktioniert.
Ich hab natürlich schon rumgesucht, aber nichts gefunden, was funktioniert. Ich muss dazu sagen, dass ich auch noch relativ neu in der Laravel-Welt bin. Im Laravel-Forum hab ich die Frage auch schon gestellt, aber bisher leider keine brauchbare Antwort bekommen.
Vielleicht sind hier ja Laravel-Profis unterwegs und können weiterhelfen!

Bedankt!
reph