2017-10-14 55 views
-1

问题:Laravel雄辩关系检索使用子表记录

我想只有记录,其中相关记录[user]不为空。

在我的情况下我只想要第一个记录。其中user不是空

结果: enter image description here

用户表

  • ID
  • 电子邮件

项目TABEL

  • ID
  • 标题
  • USER_ID [foreign key]

我的代码是这样的

$projects = App\Project::with(['user' => function ($user) { 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

foreach ($projects as $project) { 
    echo $project->title.' - '.$project; 
} 

我的结果是这样的: enter image description here

+0

你是否需要只有一个项目(任何项目),其中用户不是'null'? –

+0

是的,@AlexeyMezenin。我想要任何用户不是null的项目。 只要我将这个条件应用于结果。我发现 6月1日的结果页面上, 5结果第二页, 8结果第3页上, 等等..... 所以,**我想在查询申请没有结果这个条件。 ** –

回答

-1

你可以试试:

$projects = App\Project::with(['user' => function ($user) { 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

foreach ($projects as $project) { 
    if($project->user != null){ 
     echo $project->title.' - '.$project; 
    } 
} 
+0

这不是一个好的解决方案。它会从数据库加载每个项目,然后再循环并仅打印出用户。 – fubar

0

我得到了我的问题

$projects = App\Project::whereHas(['user' => function ($user) {   <--Change Here 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

只有更改 '与' 到 'whereHas'

通过该解决方案,我的解决办法只有那些用户(关系记录)不为null的项目记录。