【发布时间】:2015-08-14 07:37:24
【问题描述】:
我正在开展一个项目,该项目具有一些复杂的模型,该模型已加入其关系并且还需要一个参数。这一切都很好,除了当我需要急切加载关系时,因为我不知道是否有办法将参数/变量传递给它。
控制者
$template = Template::find($request->input('id'));
$this->output = $template->zones()->with('widgets_with_selected')->get();
模型
public function widgets_with_selected($banner_id)
{
return $this->belongsToMany('App\Models\Widget', 'zone_has_widgets')
->leftJoin('banner_has_widgets', function($join) use($banner_id) {
$join->on('widgets.id', '=', 'banner_has_widgets.widget_id')
->where('banner_has_widgets.banner_id', '=', $banner_id);
})
->select('widgets.*', 'banner_has_widgets.banner_id');
}
这将返回一个缺少参数错误,因为变量没有被传递。
我已经通过将逻辑移动到控制器解决了这个问题,但我想知道是否有办法将关系保留在模型中并使用参数调用它。
【问题讨论】: