Laravel: wie um auszudrücken, DASS GRAF in eloquenter
Wie kann ich zum Ausdruck bringen, diese Abfrage in Laravel?
SELECT `projects_issues`.* FROM `projects_issues`
JOIN `projects_issues_tags`
ON `projects_issues_tags`.`issue_id` = `projects_issues`.`id`
JOIN `tags`
ON (`tags`.`id` = `projects_issues_tags`.`tag_id`)
WHERE `project_id` = '1'
AND `tags`.`tag` IN('tagname1','tagname2')
GROUP BY `projects_issues`.`id`
HAVING COUNT(DISTINCT `tags`.`tag`) = 2
ORDER BY `projects_issues`.`updated_at` DESC
Recht jetzt mein code ist dieser.
`
$issues = \Project\Issue::with('tags');
if ($tags || $sort_by != 'updated')
{
$issues = $issues
->join('projects_issues_tags', 'projects_issues_tags.issue_id', '=', 'projects_issues.id')
->join('tags', 'tags.id', '=', 'projects_issues_tags.tag_id');
}
$issues = $issues->where('project_id', '=', Project::current()->id);
if ($tags)
{
$tags_collection = explode(',', $tags);
$tags_amount = count($tags_collection);
$issues = $issues->where_in('tags.tag', $tags_collection);//->get();
}
$issues = $issues
->group_by('projects_issues.id')
->order_by($sort_by_clause, $sort_order);
if($tags && $tags_amount>1){
$issues = $issues->having('count', '=', $tags_amount);
}
$issues = $issues->get(array('projects_issues.*'));
Es gibt diesen Fehler zurück: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'count' in 'having clause'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
havingRaw
:Fand die Antwort.
In Laravel 3:
Ich vermute, @voodoo417 Antwort funktioniert für Laravel 4.
$tags_amount
ist gebunden in PDO, während in voodoo417 ist es nicht.$tags_amount = count($tags_collection);
sicher?havingRaw
bedeutet einfach nur, dass die übergebene variable nicht gebunden werden in PDO statement, Punkt.