我想从另一个表中选择一个字段,如何在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条答案
按热度按时间5q4ezhmt1#
删除
**
使用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();
vnjpjtjt2#
你不应该这样做。有一个优雅的方式来做到这一点使用雄辩的关系对您的模型
首先,我们将在这样的公司模型中定义hasmany关系。
现在当我们尝试查询“company”模型时。我们可以这样做
这将返回->get()中定义的所有列,其中所有列与structures表中主键为“company”模型的列匹配。
您可以通过向->with()管道添加闭包来限制数据,并仅获取所需的列。例如,如果我只想获得“company structures location”属性(我假设您将拥有一个),那么我们可以这样做。
我希望这能解决你的问题。我郑重建议您阅读我上面提供的链接中的文档,并确保尽可能多地使用laravel。根据您的laravel版本参考文档版本。