我在查询数据库时遇到问题。
我的数据库如下:
表格订单:
我已经完成了从订单到用户的模型关系。
public function user(){
return $this->hasOne('App\User','id','user_id');
}
我如何构建我的查询:
$query = Order::query();
$query->where('deleted', 0);
$fields = array('user' => ['username','dealername'], 'ordernumber', 'ordernumber_second');
foreach ($fields as $relation => $field) {
if (is_array($field)){
$query->whereHas($relation, function ($q) use ($field, $searchquery) {
$q->where(function ($q) use ($field, $searchquery) {
foreach ($field as $relatedField){
$q->orWhere($relatedField, 'like', "%{$searchquery}%");
}
});
});
} else {
$query->orWhere($field, 'like', "%{$searchquery}%");
}
}
$orders = $query->orderBy('created_at','desc')->get();
// return view ETC
这是有效的,唯一不起作用的是where子句:
$query->where('deleted', 0);
无法正常工作,即使已删除,查询也会返回所有记录。
它可能与之前的orWhere有关,但我无法弄明白。
我尝试了什么:
where('deleted' , 0);
放在其他地方$query
嵌套在else 感谢任何帮助
答案 0 :(得分:1)
new
现在在查询中,您可以将代码重写为
public function user(){
return $this->belongsTo('App\User','user_id');
}