我有这行查询可以通过localhost在MySQL上运行,我想在Laravel上使用它,但是我不知道如何将代码转换或翻译成Eloquent。
这两个模型相互关联。这就是我尝试的代码。
状态
public function reqs(){
return $this->belongsTo('App\Reqs','reqs_id','id');
}
要求
public function statuses()
{
return $this->hasMany('App\Statuses','reqs_id','id');
}
这是我尝试过的,无法获得我想要的
$reqs = Statuses::with('reqs')->
where('status','=',$status)->
where('user_id','=',auth()->user()->id)->get();
另一方面,这是有效的
DB::select('SELECT * from `statuses`, `reqs`
WHERE `statuses`.`status` = ?
AND `reqs`.`id` = `statuses`.`reqs_id`
AND `reqs`.`user_id` = ?
', [$status,auth()->user()->id]);
我达到了我的期望,但是我想知道是否有一种雄辩的方法。 谢谢。
答案 0 :(得分:0)
您不能使用Eloquent从两个表中进行选择,您需要显式连接另一个表。您不需要此查询的select()
部分,但您可能应该明确说明想要的字段,以便获得所需的数据。
Status::select('statuses.*')
->join('reqs', 'reqs.id', '=', 'statuses.reqs_id')
->where('statuses.status', $status)
->where('reqs.user_id', auth()->id())
->get();