0

Laravel5.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 ステートメントのサブクエリのようです。「WhoCreatedTheProject value does not match in the database ? I meant I am looking forInner Join」の場合、全体的にノー レコードを返す方法はありますか。

::with(['Project' => function($query){
    $query->where('WhoCreatedTheProject', 16);
}])
4

1 に答える 1

0

これは次の方法で実行できます (クエリは 1 つです)。

\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もちろん、値に一致するようにテーブル名を変更する必要があります。

しかし、質問に答えると、あなたの例ではサブクエリは実行されません。すべてのプロジェクト入札を取得しており (これは最初のクエリです)、後で別のクエリで、この入札に対するすべてのプロジェクトを取得しますWhoCreatedTheProject = 16(これは 2 番目のクエリです)。したがって、これはあなたがおそらく達成したいものとは異なるものです。

于 2015-12-23T21:49:10.447 に答える