我有模特专辑(表专辑)和模特照片(表照片)。当我将所有相册都提取到网页时,我想将每张相册中的第一张照片显示为相册图片。
专辑模型:
public function photos()
{
return $this->hasMany('App\Photo');
}
照片模特:
public function album()
{
return $this->belongsTo('App\Album');
}
查询:
public function getAlbums()
{
return DB::table('albums')
->join('photos', 'albums.id', '=', 'photos.album_id')
->select('photos.title', 'albums.title AS album_title', 'albums.slug AS album_slug')
->get();
}
它会返回包含专辑标题的所有照片。如何修改查询以仅返回每张专辑中的第一张照片?如何在连接表中使用LIMIT 1?或者还有另一种方法吗?感谢名单。
答案 0 :(得分:0)
将form {
display: inline;
font-size: 0;
}
替换为get()
,因为get返回一个对象实例,首先会返回一个实例;
first()
答案 1 :(得分:0)
为什么不以Laravel方式而不是原始数据库查询?这样做有一个技巧。首先在您的相册模型中添加一个方法(我使用latest()
但您可能要执行oldest()
或其他限制described in the docs
):
public function firstPhoto() {
return $this->hasOne('App\Photo')->latest();
}
现在你可以做到:
public function getAlbums() {
return Albums::with('firstPhoto')->get();
}