试图避免在 Select 语句中使用子查询:Laravel 5.1

Trying to avoid Subquery in the Select Statement : Laravel 5.1

我正在使用 Laravel 5.1。下面是我的数据库查询

\App\Models\Project\Bids\ProjectBid_Model
::with(['Project' => function($query){
    $query->where('WhoCreatedTheProject', 16);
}])
->where('ProjectBidID', 1)
->where('FreelancerAwardedProjectStatusID', \App\ProjectStatus::InProgress)
->first()

问题是什么?

下面的部分,如果没有记录,那么Project Object就是null。这似乎是 select 语句中的一个子查询。有没有办法return如果'WhoCreatedTheProjectvalue does not match in the database ? I meant I am looking forInner Join`.

整体没有记录
::with(['Project' => function($query){
    $query->where('WhoCreatedTheProject', 16);
}])

您可以这样做(您将有一个查询):

\App\Models\Project\Bids\ProjectBid_Model
::selectRaw('projectbid_table.*')
->join('projects_table','projectbid_table.project_id','=','project_table.project_id')
->where('WhoCreatedTheProject',16);
->where('ProjectBidID', 1)
->where('FreelancerAwardedProjectStatusID', \App\ProjectStatus::InProgress)
->first();

您当然需要更改 join 中的 table 名称以匹配您的值。

但是回答这个问题,在您的示例中,任何子查询都不会 运行。您将获得所有项目出价(这是第一个查询),稍后在单独的查询中您将获得此出价的所有项目 WhoCreatedTheProject = 16(这是第二个查询)。所以你展示的是你想要实现的不同的东西。