laravel eloquent 未返回任何数据
laravel eloquent not returning any data
agency.php
class agency extends Model
{
protected $table = 'agency';
public function organizations()
{
return $this->belongsTo('\App\model\organization');
}
}
agencyController.php
$agency = \App\model\agency::with('organizations')->get();
agency.blade.php
@foreach($agency as $agency)
<tr>
<th>{{$agency['id']}}</th>
<th>{{$agency['agency_name']}}</th>
<th>{{$agency['linked_organization_id']}}</th>
<th>{{$agency['created_at']}}</th>
<th>{{$agency['updated_at']}}</th>
<th>{{$agency->organizations->organization_name}}</th>
</tr>
@endforeach
错误
正在尝试获取 属性 的非对象
为什么 {{$agency->organizations->organization_name}} 没有 return 数据???
你的代码有很多错误:
1st: 为什么关系名称是 organization>s<
(复数)如果它
指的是单个组织?
这真的是一个组织,还是您混淆了您的关系?
第二个: 这可能是您问题的原因:
@foreach($agency as $agency)
您对数组和项使用了相同的变量名。
通过这样做,在第一个 foreach 迭代中,您将拥有一个模型,很好。但是您已经用模型替换了 "foreached" 数组。
现在在后续迭代中,foreach 将迭代模型的属性。
那为什么$agency->organizations
会报错!
第三:(新)您的组织关系错误!
public function organizations()
{
return $this->belongsTo('\App\model\organization');
}
使用这种方式,Laravel 假定您的外键是 organizations_id
。但是在你的代码中,我看到你的外键是 linked_organization_id
。所以你必须指定外键名称!
public function organizations()
{
return $this->belongsTo('\App\model\organization', 'linked_organization_id');
}
我的建议:
- 数组/集合变量应该命名为复数
- Model 和其他值变量 SHOULD 命名为 singular.
这将防止您再次犯同样的错误。
另一个建议:
Laravel 遵循 PSR-0 (autoload) and PSR-2(编码风格)标准。
这为您应该如何编写代码提供了很多方向。
我看到您的 类 名称使用 lowerCamelCase
,但 PSR-2 默认使用 upperCamelCase
。
尝试
@foreach($agencies as $agency)
<tr>
<th>{{$agency['id']}}</th>
<th>{{$agency['agency_name']}}</th>
<th>{{$agency['linked_organization_id']}}</th>
<th>{{$agency['created_at']}}</th>
<th>{{$agency['updated_at']}}</th>
<th>{{$agency->organizations()->organization_name}}</th>
</tr>
@endforeach
agency.php
class agency extends Model
{
protected $table = 'agency';
public function organizations()
{
return $this->belongsTo('\App\model\organization');
}
}
agencyController.php
$agency = \App\model\agency::with('organizations')->get();
agency.blade.php
@foreach($agency as $agency)
<tr>
<th>{{$agency['id']}}</th>
<th>{{$agency['agency_name']}}</th>
<th>{{$agency['linked_organization_id']}}</th>
<th>{{$agency['created_at']}}</th>
<th>{{$agency['updated_at']}}</th>
<th>{{$agency->organizations->organization_name}}</th>
</tr>
@endforeach
错误
正在尝试获取 属性 的非对象
为什么 {{$agency->organizations->organization_name}} 没有 return 数据???
你的代码有很多错误:
1st: 为什么关系名称是 organization>s<
(复数)如果它
指的是单个组织?
这真的是一个组织,还是您混淆了您的关系?
第二个: 这可能是您问题的原因:
@foreach($agency as $agency)
您对数组和项使用了相同的变量名。
通过这样做,在第一个 foreach 迭代中,您将拥有一个模型,很好。但是您已经用模型替换了 "foreached" 数组。
现在在后续迭代中,foreach 将迭代模型的属性。
那为什么$agency->organizations
会报错!
第三:(新)您的组织关系错误!
public function organizations()
{
return $this->belongsTo('\App\model\organization');
}
使用这种方式,Laravel 假定您的外键是 organizations_id
。但是在你的代码中,我看到你的外键是 linked_organization_id
。所以你必须指定外键名称!
public function organizations()
{
return $this->belongsTo('\App\model\organization', 'linked_organization_id');
}
我的建议:
- 数组/集合变量应该命名为复数
- Model 和其他值变量 SHOULD 命名为 singular.
这将防止您再次犯同样的错误。
另一个建议:
Laravel 遵循 PSR-0 (autoload) and PSR-2(编码风格)标准。
这为您应该如何编写代码提供了很多方向。
我看到您的 类 名称使用 lowerCamelCase
,但 PSR-2 默认使用 upperCamelCase
。
尝试
@foreach($agencies as $agency)
<tr>
<th>{{$agency['id']}}</th>
<th>{{$agency['agency_name']}}</th>
<th>{{$agency['linked_organization_id']}}</th>
<th>{{$agency['created_at']}}</th>
<th>{{$agency['updated_at']}}</th>
<th>{{$agency->organizations()->organization_name}}</th>
</tr>
@endforeach