Laravel 5.7:QueryBuilder获取返回所有记录,甚至自定义查询执行不返回记录

时间:2019-01-19 06:59:00

标签: laravel eloquent laravel-5.7

这真的很奇怪,我正在与房地产相关的网站上工作,并且有两个表usersuser_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()返回我:

enter image description here

当我在phpmyadmin中执行此查询时,它什么也没有返回给我,但是laravel get()却向我返回了所有记录。

谁能告诉我我错了吗?

1 个答案:

答案 0 :(得分:0)

这是因为渴望的加载关系(在您的情况下为usermeta)被作为单独的SQL查询执行。然后使用PHP将它们映射到User模型,而不是在数据库级别。