Я использую 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
, Это кажется подзапросом в операторе выбора. Есть ли способ вернуть общее отсутствие записи, если ‘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
чтобы соответствовать вашим ценностям.
Но, отвечая на вопрос, в вашем примере ни один подзапрос не будет запущен. Вы получаете все заявки на проекты (это 1-й запрос), а позже в отдельном запросе вы получаете все проекты для этих заявок, для которых WhoCreatedTheProject = 16
(это второй запрос). Так что то, что вы показали, это нечто иное, чего вы, вероятно, хотите достичь.
Других решений пока нет …