这真的很奇怪,我正在与房地产相关的网站上工作,并且有两个表users
和user_metas
,其中user表包含user的所有基本详细信息,而user_metas具有与meta相关的所有信息。用户。
user_metas 表结构
----------------------------------------------------------------------
id | user_id | key | value | created_at | updated_at
----------------------------------------------------------------------
1 | 2 | age | 20 | 2019-17-01 | 2019-17-01
----------------------------------------------------------------------
2 | 3 | age | 40 | 2019-17-01 | 2019-17-01
我只是执行查询:
(new User)->newQuery()->where('user_type','rn')->with(['usermeta' => function($query) use ($minAge, $maxAge){
return $query->where('key','age')->where('value','>=',$minAge);
}])->whereHas('usermeta', function($query) use ($minAge, $maxAge){
return $query->where('key','age')->where('value','>=',$minAge);
})->toSql();
toSql()
返回我:
当我在phpmyadmin中执行此查询时,它什么也没有返回给我,但是laravel get()
却向我返回了所有记录。
谁能告诉我我错了吗?
答案 0 :(得分:0)
这是因为渴望的加载关系(在您的情况下为usermeta
)被作为单独的SQL查询执行。然后使用PHP将它们映射到User
模型,而不是在数据库级别。