laravel whereHas 一对多根据最新一条数据搜索
public function dailies()
{
return $this->hasMany(SearchCensusDaily::class, 'search_census_id', 'id');
}
public function last_daily()
{
return $this->hasOne(SearchCensusDaily::class, 'search_census_id', 'id')->latest('id');
}
// 搜索的结果不对 用的dcat/laravel-wherehasin扩展
$this->whereHasIn('last_daily', function (Builder $query) use ($value) {
if ($start = head($value)) {
$query->where('score', '>=', $start);
}
if ($end = last($value)) {
$query->where('score', '<=', $end);
}
});
sql语句
select
*
from
`search_censuses`
where
`search_censuses`.`id` in (
select
`search_census_dailies`.`search_census_id`
from
`search_census_dailies`
where
`search_censuses`.`id` = `search_census_dailies`.`search_census_id`
and `score` >= '1246'
and `score` <= '2345'
order by
`id` desc
)
limit
15 offset 0
请指教!
不使用wherehasin扩展呢,看看数据对不对
hasOne
改成belongsTo
试试,没仔细看,大概率是这个问题