试图避免在 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 for
Inner 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
(这是第二个查询)。所以你展示的是你想要实现的不同的东西。
我正在使用 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 for
Inner 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
(这是第二个查询)。所以你展示的是你想要实现的不同的东西。