我在尝试处理此查询时遇到很多麻烦。我是Laravel 4的新手,所以轻松一点。

我有2张桌子。上传和相册。目前,我正在尝试根据用户的ID输出所有相册,并获取与该相册相关的上载的最新缩略图。

这是我当前正在使用的代码:

DB::table("albums")
->select("albums.*","uploads.thumbnail")
->join("uploads", "uploads.albumid", "=", "albums.id")
->where("albums.userid", "=", Auth::user()->id)
->orderBy("uploads.id", "ASC")
->get()


输出错误。输出显示的内容几乎相反。它遍历上传而不是专辑,并检索专辑表的第一条记录。

(
[0] => stdClass Object
    (
        [id] => 1
        [userid] => 1
        [private_code] => PJ3r6Ps3c5rRrceKRLvWmpk4o5GvHKHk7QCUnRkTmlwUnxnjmL9kVaOa1N4Tm124
        [slug] => album-test-1
        [name] => Album test 1
        [description] => Album test 1
        [privacy] => Public
        [created_at] =>
        [updated_at] =>
        [thumbnail] => 6s/zj/4e/6SZj4Ev409fU2b3NYHzgW7O9Jn3MFeDb_thumbnail.jpg
    )

[1] => stdClass Object
    (
        [id] => 1
        [userid] => 1
        [private_code] => PJ3r6Ps3c5rRrceKRLvWmpk4o5GvHKHk7QCUnRkTmlwUnxnjmL9kVaOa1N4Tm124
        [slug] => album-test-1
        [name] => Album test 1
        [description] => Album test 1
        [privacy] => Public
        [created_at] =>
        [updated_at] =>
        [thumbnail] => 17/zs/11/17zs11CwBKsPilpeMVjH7A7gTEcRxb4P_thumbnail.jpg
    )
)


我想遍历专辑,同时检索该专辑的最近上传缩略图以用作该专辑的缩略图。

最佳答案

口才更好的一些工作。由于此表不比较2个联接表之间的字段,因此,由于Eloquent使用2个单独的SELECT查询,因此您将获得更好的性能和更轻松的时间。

专辑型号:

public function uploads() { return $this->hasMany('Upload', 'albumId') }


上传模型:

public function album() { return $this->belongsTo('Album', 'albumId') }


查询:

$albums = Album::with(['uploads' => function($query){
    $query->orderBy('created_at', 'desc')->take(1);
}])->where('userId', Auth::user()->id)->get();


使用以下方法在视图中获取缩略图:

@foreach($albums as $album)
    {{ $album->uploads->first()->thumbnail }}
@endforeach

09-30 15:41
查看更多