Auf meiner Website erlaube ich Benutzern, Bilder/Bilder/Lieblingsbilder/etc hochladen.orderBy Attribute einer anderen Tabelle in Laravel
Deshalb habe ich für Bilder einen Tisch bekam, mag, Favoriten etc.
Ich kann diese Bilder ganz gut erhalten und anzuzeigen, und sie sortieren, wie ich
$images = Images::orderBy('id', 'desc')->Paginate(50);
wie kann ich zeige auch an, wie viele Likes/Favoriten ein Bild hat.
$favCount = Favorite::where('image_id', $image->id)->count();
Allerdings, was würde ich tun, um Bilder zu sortieren, sagen wir, wie viele Favoriten haben sie? Ich habe ein Lieblingsmodell und ein Bildmodell, aber ich bin mir nicht sicher, wie ich das machen würde.
EDIT:
Aktuelle Abfrage für die Antwort gegeben:
$images = Images::join('favorites', 'favorites.image_id', '=', 'images.id')
->select('images.link', DB::raw('count(favorites.id) as favs'))
->orderBy('favs', 'desc')
->groupBy('images.link')
->take(10)
->get();
und der Fehler ist:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'images' in 'field list' (SQL: select
images
, count(favorites.id) as favs fromimages
inner joinfavorites
onfavorites
.image_id
=images
.id
group byimages
.link
order byfavs
desc limit 10)
Haben Sie es mit 'DB' versucht, wie ich es getan habe? Ich denke, der Fehler kommt von 'Images :: raw()'. Versuchen Sie 'Images :: raw' durch 'DB :: raw()' zu ersetzen. Oder führe alle Abfragen mit 'DB' aus, wie ich es getan habe. Und sehen Sie die Ergebnisse. Bitte. – EddyTheDove
Ah, du hattest Recht. Entschuldigung, dies ist das erste Mal, dass ich rohe Ausdrücke verwende. Immer noch ein Fehler. Die neue Abfrage und der Fehler befinden sich im Hauptpost. Danke, dass du mir geholfen hast! –
In Ihrer Tabelle 'images' wenn Sie eine Eigenschaft' link' oder 'name' haben. Versuchen Sie 'auszuwählen '(' link ', DB :: raw (' count (favorites.id) als Favoriten '))' '. Es scheint, dass Sie keine Eigenschaft 'images' in Ihrer Tabelle' images' haben. Kannst du es alles mit 'DB' versuchen und sehen, ob es funktioniert? – EddyTheDove