2017-12-05 1 views
0

Ich möchte Seitenumbruch in Laravel erstellen, aber es gibt Fehler. hier Fehler „Call auf eine Elementfunktion Paginieren() auf Array“Aufruf an eine Member-Funktion paginate() bei Array-Fehler in Laravel

das ist meine Abfrage

$blog = DB::select("select blog_post.*,(select img_name from blog_image WHERE blog_image.bid=blog_post.bid limit 0,1) as img_name, 
(SELECT count(*) FROM likes WHERE likes.bid =blog_post.bid) AS likes, 
(SELECT count(*) FROM comment WHERE comment.bid =blog_post.bid) as comments , 
(SELECT count(*) FROM blog_share WHERE blog_share.bid =blog_post.bid) as share 
from blog_post WHERE status=1 AND is_draft=0 AND is_publish=1 AND is_delete=0")->paginate(2); 
+1

Schreiben Sie Ihre Anfrage mit Eloquent. Sie können 'paginate' sonst nicht verwenden. –

+0

Danke, aber ich brauche Alle Ergebnisse in nur einer Abfrage, wie ich Abfrage oben schreibe. Dies ist in Laravel möglich. Wenn ja, wie? –

+1

Ja, es ist möglich in Laravel, mit einer Kombination der eloquenten Funktionen und 'DB :: raw()'. –

Antwort

1

Als erstes müssen Sie Ihre Abfrage mit Laravel Eloquent neu zu schreiben. Zum Beispiel:

$blog = DB::table('blog_post')->where([ 'status' => 1, 'is_draft' => 0, 'is_publish' => 1, 'is_delete' = 0 ])->paginate(2); 

Sie müssen nicht unbedingt alle counts/inner-Abfragen in eine Abfrage setzen. Sie können beredte Beziehungen und Mutatoren verwenden, um diese Informationen für Sie zu erhalten. Zum Beispiel die folgende Beziehung, um das Bild zu bekommen:

Verwandte Themen