【问题标题】:Trying to avoid Subquery in the Select Statement : Laravel 5.1试图在 Select 语句中避免子查询:Laravel 5.1
【发布时间】:2015-12-23 21:29:14
【问题描述】:

我使用的是 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 语句中的子查询。如果'WhoCreatedTheProjectvalue does not match in the database ? I meant I am looking forInner Join`有什么方法可以返回整体没有记录。

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

【问题讨论】:

    标签: php laravel-5 eloquent laravel-5.1 laravel-query-builder


    【解决方案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(这是第二个查询)。因此,您展示的内容可能与您想要实现的不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 2015-08-02
      相关资源
      最近更新 更多