Php 我想在where()之后使用orderBy()和take(),但它的查询正好与我想要的答案相反
让我们假设一个Php 我想在where()之后使用orderBy()和take(),但它的查询正好与我想要的答案相反,php,mysql,laravel,Php,Mysql,Laravel,让我们假设一个事件表,我想得到在当前日期之后举行的第一个最新事件,我按事件开始日期排序 但它正在查询第一个orderBy,然后对其执行运行条件 EVENT::where(Event::START_DATE, '>', 'CURDATE()')->orderBy(Event::START_DATE)->take($nThEvent)->get()->toArray(); 这对你有用吗 EVENT::where(Event::START_DATE, '>', '
事件
表,我想得到在当前日期
之后举行的第一个最新事件,我按事件开始日期
排序
但它正在查询第一个orderBy
,然后对其执行运行条件
EVENT::where(Event::START_DATE, '>', 'CURDATE()')->orderBy(Event::START_DATE)->take($nThEvent)->get()->toArray();
这对你有用吗
EVENT::where(Event::START_DATE, '>', 'CURDATE()')->latest('START_DATE')->first();
如果必须调用sql函数,则应使用
whereRaw()
,例如:
EVENT::whereRaw(EVENT::START_DATE.'>CURDATE()
->最新(事件:开始日期)
->以($NTH事件)为例
->get()->toArray();
顺便说一句,您可以始终使用toSql()
调试查询,它返回一个包含生成SQL的字符串:
EVENT::whereRaw(EVENT::START_DATE.'>CURDATE()
->最新(事件:开始日期)
->以($NTH事件)为例
->toSql();
请注意,latest(Event::START_DATE)
等于writeorderBy(Event::START_DATE,'desc')
更新:如果只想获取一条记录,则应使用返回集合的first()
而不是get()
,例如:
EVENT::whereRaw(EVENT::START_DATE.'>CURDATE()
->最新(事件:开始日期)
->第一()
如果我只是删除orderBy和take,条件工作得很好,但最新的工作很好,toSql真的可以拯救生命,我以前不知道这一点,谢谢