【发布时间】:2017-01-05 10:54:48
【问题描述】:
我为Content的名称制作模式
class Content extends Model
{
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
protected $guarded = [];
/**
* Get Images
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function images()
{
return $this->hasMany(Image::class, 'content_id')->orderBy('sort');
}
}
我仍然在 controller
中使用以下代码$data = \App\Models\Content::has('images')
->leftJoin('content_relations AS r', 'contents.id', '=', 'r.content_id')
->leftJoin('products AS p', 'contents.id', '=', 'p.content_id')
->whereIn('r.category_id', [1, 2, 3])
->groupBy('contents.id')->take(4)->get();
当我打电话时,它会为我提供图像记录
foreach ($data as $row) {
var_dump($row->images);
}
如果我更改了 controller 中的代码以从 Content Model 中获取某些列,则只需添加选择功能
$data = \App\Models\Content::has('images')->select('title', 'cover', 'slug')
->leftJoin('content_relations AS r', 'contents.id', '=', 'r.content_id')
->leftJoin('products AS p', 'contents.id', '=', 'p.content_id')
->whereIn('r.category_id', [1, 2, 3])
->groupBy('contents.id')->take(4)->get();
那么它就不返回数据了
foreach ($data as $row) {
var_dump($row->images);
}
【问题讨论】:
标签: php model laravel-5.2 relationship