我在Laravel( 5.6 版本)应用程序中为 Slider模块使用了显式路由模型绑定。现在,当我尝试将滑块表与file_uploads表联接时,我面临一个问题。
RouteServiceProvider
$this->bind('slider', function ($value) {
$slider = new Slider;
return Slider::withTrashed()
->leftjoin('file_uploads','file_uploads.file_code', '=', 'sliders.file_code')
->where('sliders.id', $value)->first();
});
这是代码正在使用。
滑块和 file_uploads 表均具有 ID 列。并且在滑块编辑页面中,正在从file_uploads
表中获取ID。我的预期ID来自sliders
表。
非常感谢您能提供的任何帮助。
答案 0 :(得分:0)
如果您使用过Eloquent Relationship,则可能会因表id
而使您拥有表中的一个joins
属性覆盖另一个属性。
但是为了使用Joins,您可以使用select()
(请参阅Selects)或将数组参数传递给first()
来检索所需的id作为另一个属性。方法,因此您的代码变为:
return Slider::withTrashed()
->leftjoin('file_uploads','file_uploads.file_code', '=', 'sliders.file_code')
->where('sliders.id', $value)
->first(['*', 'sliders.id as sliders_id']);
或者:
return Slider::withTrashed()
->leftjoin('file_uploads','file_uploads.file_code', '=', 'sliders.file_code')
->where('sliders.id', $value)
->select('*', 'sliders.id as sliders_id')
->first();
以任何一种方式将select语句作为查询传递,并将id
的值作为sliders_id
返回,您可以在需要id
的地方使用它。