如何从其他表中选择字段

时间:2018-11-29 05:55:02

标签: php mysql laravel laravel-5 controller

我想从另一个表中选择一个字段,我该如何在laravel中做到这一点,即时通讯仍然在laravel中实现。

这里是我的代码

$company = Company::select(
['companies.id', 'companies.CompanyName', 'companies.Discount', 'companies.OrgNumber', 'companies.ExternalID', 'companies.DCity'])
 ->join('companystructures AS cs', 'cs.ChildCompanyID', '=', 'companies.id')
 ->where(['companies.Active' => 1, 'cs.Active' => 1])->get();

我想向表ParentCompanyID中的字段companystructures添加更多选择。

我这样尝试,但出现错误

$company = Company::select(['companies.id', 'companies.CompanyName', 'companies.Discount', 'companies.OrgNumber','companies.ExternalID', 'companies.DCity', '**companystructures.ParentCompanyID**'])
 ->join('companystructures AS cs', 'cs.ChildCompanyID', '=', 'companies.id')
 ->where(['companies.Active' => 1, 'cs.Active' => 1])->get();

2 个答案:

答案 0 :(得分:2)

删除**并在cs.ParentCompanyID中使用companystructures.ParentCompanyID代替select

$company = Company::select([
                 'companies.id', 
                 'companies.CompanyName', 
                 'companies.Discount', 
                 'companies.OrgNumber',
                 'companies.ExternalID', 
                 'companies.DCity', 
                 'cs.ParentCompanyID'
             ])
          ->join('companystructures AS cs', 'cs.ChildCompanyID', '=', 'companies.id')
          ->where(['companies.Active' => 1, 'cs.Active' => 1])
          ->get();

答案 1 :(得分:0)

您不应该这样做。在您的模型上使用Eloquent Relationships可以用一种优雅的方法

首先,我们将像这样在公司模型中定义hasMany关系。

public function structures()
{
  return $this->hasMany(CompanyStructures::class, foreign_key, local_key);
}

现在,当我们尝试查询“公司”模型时。我们可以这样做

return Company::with('structures')->get([ALL_YOUR_SELECT_COLUMNS]);

这将返回-> get()中定义的所有列,并且结构表中所有与“ Company”模型的主键匹配的列。

您可以通过在-> with()管道中添加闭包来限制数据,并仅获取所需的列。例如,如果我只想获得“公司结构位置”属性(我假设您将拥有一个),那么我们将做类似的事情。

return Company::with(['structures' => function(){
    return $query->select(columns_from_child_table);
}])->get([ALL_YOUR_SELECT_COLUMNS]);

我希望能解决您的问题。我强烈建议您阅读上面提供的链接中的文档,并确保尽可能多地使用laravel。根据您的Laravel版本参考文档版本。