我有两个相互关联的模型:
class Task extends Model{
public function user(){
return $this->belongsTo('App\User', 'user_id');
}
}
class User extends Model{
public function tasks(){
return $this->hasMany('App\Task', 'user_id');
}
}
现在我想创建一些搜索或过滤系统。
用户可以选择一个表格,然后再选择其参数(年龄,性别等)
我该怎么做?我试图在关系上使用newQuery但... 任何帮助,谢谢
答案 0 :(得分:2)
我希望我能很好地理解你。 像这样
使用嵌套的where
和whereHas
$tasks = Task::where('condition', $var)
->orWhereHas('user', function($q) use ($var){
$q->where('condition', 'LIKE', '%'. $var.'%');
});
答案 1 :(得分:0)
尝试一下。我希望它对您有用。
使用连接从两个表中获取数据
function getBuildings($request) {
if (isset($request->keyword) && $request->keyword != '') {
$data = $this->where(function($query) use ($request) {
$query->orWhere('users.column_name', 'LIKE', '%' . $request->keyword . '%');
$query->orWhere('users.column_name', 'LIKE', '%' . $request->keyword . '%');
});
}
$datacount = $this->count();
$dataArray = $this->select('users.*,task.whatever data you want to get from task');
if ($request->length == -1) {
$dataArray = $dataArray->get();
} else {
$dataArray = $dataArray->skip($request->start)->take($request->length)->get();
}
return [$datacount, $dataArray];
}