我想获取会议表中状态列等于“ P”并且具有end_date 但是像这样不起作用,它出现了: $publishedConferences =
$user->conferences()->
where(['status', '=', 'P'],
['end_date','<', now()])->paginate($pageLimit);
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0'
in 'where clause' (SQL: select count(*) as aggregate
from `conferences` where `conferences`.`organizer_id` = 4
and `conferences`.`organizer_id` is not null
and (`0` = status and `1` = = and `2` = P))
答案 0 :(得分:1)
引用:https://laravel.com/docs/5.6/queries#where-clauses
只需添加多个where()
$users = DB::table('users')
->where('votes', '>', 100)
->where('name', 'John')
->get();
如果您需要OR
运算符
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get();
您也可以使用whereColumn
来执行此操作,只需注意他们正在使用and
运算符:
$users = DB::table('users')
->whereColumn([
['first_name', '=', 'last_name'],
['updated_at', '>', 'created_at']
])->get();
答案 1 :(得分:0)
尝试关闭:
$publishedConferences =
$user->conferences()->
where(function ($query) {
$query->where('status', '=', 'P');
$query->where('end_date','<', now());
})
->paginate($pageLimit);
答案 2 :(得分:0)
您已经很接近了,但是您对where()
的参数却有些偏离。
传递where子句数组时,它必须是数组数组。您只需要将参数包装在另一个数组中即可:
$publishedConferences = $user->conferences()
->where([
['status', '=', 'P'],
['end_date','<', now()]
])
->paginate($pageLimit);
这实际上与使用闭包并向查询中单独添加where子句相同。
答案 3 :(得分:0)
我认为这比较干净。
{{1}}
答案 4 :(得分:-1)
您可以执行以下操作:
$publishedConferences = $user->conferences()->where('status', 'P')->where('end_date','<',Carbon::now())->paginate($pageLimit);