Ich versuche Tage zu verstehen, wie ich eine SQL-Abfrage in eine Abfrage Builder-Stil in Laravel konvertieren kann.konvertieren SQL-Abfrage in Query Builder-Stil
My SQL-Abfrage ist:
$tagid = Db::select("SELECT `id` FROM `wouter_blog_tags` WHERE `slug` = '".$this->param('slug')."'");
$blog = Db::select("SELECT *
FROM `wouter_blog_posts`
WHERE `published` IS NOT NULL
AND `published` = '1'
AND `published_at` IS NOT NULL
AND `published_at` < NOW()
AND (
SELECT count(*)
FROM `wouter_blog_tags`
INNER JOIN `wouter_blog_posts_tags` ON `wouter_blog_tags`.`id` = `wouter_blog_posts_tags`.`tags_id`
WHERE `wouter_blog_posts_tags`.`post_id` = `wouter_blog_posts`.`id`
AND `id`
IN (
'".$tagid[0]->id."'
)) >=1
ORDER BY `published_at` DESC
LIMIT 10
OFFSET 0");
Wo ich jetzt an den Query Builder Ende zu konvertieren ist:
$test = Db::table('wouter_blog_posts')
->where('published', '=', 1)
->where('published', '=', 'IS NOT NULL')
->where('published_at', '=', 'IS NOT NULL')
->where('published_at', '<', 'NOW()')
->select(Db::raw('count(*) wouter_blog_tags'))
->join('wouter_blog_posts_tags', function($join)
{
$join->on('wouter_blog_tags.id', '=', 'wouter_blog_posts_tags.tags_id')
->on('wouter_blog_posts_tags.post_id', '=', 'wouter_blog_posts.id')
->whereIn('id', $tagid[0]->id);
})
->get();
Ich habe gelesen, dass ich nicht bei dem in einem Join verwenden kann. Der Fehler, den ich jetzt bekommen:
Call to undefined Methode Illuminate \ Database \ Abfrage \ JoinClause :: worin()
ich wirklich weiß nicht, wie ich meine SQL umwandeln kann Builder abzufragen. Ich hoffe, wenn ich eine gute Umsetzung meiner Anfrage sehe, kann ich verstehen, wie ich es beim nächsten Mal machen muss.
ich habe nicht versucht, aber vielleicht verwenden '> whereRaw ([$ MarkierungslD [0] -> id]) '. Stellen Sie einfach sicher, dass der Bindungsparameter am Ende ein Array ist.Ich weiß jedoch nicht, warum Sie WHERE IN für einen Wert verwenden - $ tagid [0] -> id. Gibt dies ein Array oder etwas zurück? Hier ist eine alternative Lösung http://stackoverflow.com/questions/26913776/laravel-4-add-wholein-clause-to-a-join-condition –