Mysql 雄辩:过滤透视表和模型表

Mysql 雄辩:过滤透视表和模型表,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,雄辩的关系如下: $storedaytime ->where('date','>=',$start) ->where('date','<=',$end) ->whereHas('stores',function($q) use($user){ $q->where('user_id',$user);}) ->get(); “商店”属于许多“StoreDayTime”(属于许多) $storedaytime ->whe

雄辩的关系如下:

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
“商店”属于许多“StoreDayTime”(属于许多)

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
数据透视表(store\u day\u time\u stores)有一个名为“user\u id”的键,storedaytimes表有一个名为“date”的字段

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
我想根据给定的“用户id(来自数据透视表)”和“开始”和“结束”日期(来自storedaytime表)过滤“storedaytimes”中的记录

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
我现在的问题是

$storedaytime->stores()
    ->wherePivot('user_id','=',$user)
    ->orderBy('date')
    ->where('date','>=',$start)
    ->where('date','<=',$end)->get();
$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
$storedaily->stores()
->wherePivot('user_id','=',$user)
->订购人(“日期”)
->其中('date','>=',$start)
->其中('date','请尝试以下操作:

$storedaytime->stores()
    ->wherePivot('user_id','=',$user)
    ->whereBetween('storedaytimes.date', [$start, $end])
    ->orderBy('storedaytimes.date')
    ->get();
$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
建议将order by子句放在SQL语句的末尾,除非您必须事先对日期进行排序。您没有理由这样做,所以请将其放在末尾。

尝试以下操作:

$storedaytime->stores()
    ->wherePivot('user_id','=',$user)
    ->whereBetween('storedaytimes.date', [$start, $end])
    ->orderBy('storedaytimes.date')
    ->get();
$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();

建议将order by子句放在SQL语句的末尾,除非您必须事先对日期进行排序。对于您的情况,没有理由这样做,所以请将其放在末尾。

我自己明白了:以下查询有效:

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
$storeDaily->where('date','>=',$start)

->其中('date','我自己弄明白了:以下查询有效:

$storedaytime ->where('date','>=',$start)
->where('date','<=',$end)
->whereHas('stores',function($q) use($user){
                $q->where('user_id',$user);})
->get();
$storeDaily->where('date','>=',$start)

->其中('date','noted re order.这不起作用,它给出了以下错误:SQLSTATE[42S22]:未找到列:1054未知列'where子句中的'order\u day\u time\u store.order\u day\u time\u store.user\u id'(SQL:选择
stores
*,
order\u day\u time\u store
order\u day\u time\u id
作为
pivot\u order\u day\u time\u id
作为
pivot\u store\u id
order\u day\u time\u store
作为
用户id作为
用户,时间存储
id
as
pivot\u id
from
stores
internal join
order\u day\u time\u store
on
stores
order\u day\u time\u store
中的
order\u day\u time\u store
中的
order\u day\u time\u time\u id
为空,然后确定从存储中删除“store\u day\u time\u time\uivot clausenoted re order。这不起作用,它给出了以下错误:SQLSTATE[42S22]:未找到列:1054未知列'where子句中的'order\u day\u time\u store.order\u day\u time\u store.user\u id'(SQL:选择
stores
*,
order\u day\u time\u store
order\u day\u time\u id
作为
pivot\u order\u day\u time\u id
作为
pivot\u store\u id
order\u day\u time\u store
作为
用户id作为
用户,时间存储
id
as
pivot\u id
from
stores
internal join
order\u day\u time\u store
on
stores
order\u day\u time\u store
中的
order\u day\u time\u store
中的
order\u day\u time\u time\u id
为空,然后确定从存储中删除“store\u day\u time\u time\uivot条款