Laravel 关系 - 访问视图中的相关值
Laravel relationships - accessing related value in view
对于将相关数据传递到视图这一看似简单的问题,我找不到解决方案。我有一个模型 'Companies' 属于 'Regions'。
我在公司模型中创建了 belongsTo
关系
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
protected $table = 'companies';
protected $primaryKey = 'Comp_id';
protected $fillable = ['industrylink_id', 'region_id','companyname','contactno','regno','vatno','salaryroll','numemployees'];
public function employees(){
return $this->hasMany('App\Models\Employee');
}
public function region(){
return $this->belongsTo('App\Models\Region');
还有Region模型中的hasMany
关系:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Region extends Model
{
protected $table = 'regions';
public function companies(){
return $this->hasMany('App\Models\Company');
}
}
我的 show
控制器成功地将会话行的变量传递给视图,但是当我想使用以下内容访问相关 table 数据时...(table 'region' 列 'region')
<p>Region: {{ $company->region->region }}</p> -->
...我收到错误
"Trying to get property of non-object: (View:..."
我已将我的模型位置更改为 app\Models,并且在模型和控制器中进行了所有必要的命名空间更改,并在 composer.json 中进行了自动加载。我做了一个 composer dump & config:clear 和所有其他 mvc 参考工作。
我没有为相关的 table 创建迁移,因为 table 存在并且其中有标准参考数据。我认为在模型中创建的关系就足够了吗?
非常感谢您的帮助。
通常,当变量或关系为空时会出现此错误,因此请确保公司不为空并且有区域。如果您确定公司不为空,请检查关系:
{{ empty($company->region) ? 'No region' : $company->region->region }}
你试过吗:
dd($company->region)
看看它有什么数据return。
您是否确保在 Laravel 模型关系方法中声明了现有的 table 外键?我在您的 Company
模型中看到您声明了 $primaryKey
。在您的 companies
table 中引用 Region
的外键是什么?在 belongsTo
方法的第二个参数中声明它。示例:$this->belongsTo('App\Models\Region', 'unusual_region_id');
对于将相关数据传递到视图这一看似简单的问题,我找不到解决方案。我有一个模型 'Companies' 属于 'Regions'。
我在公司模型中创建了 belongsTo
关系
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
protected $table = 'companies';
protected $primaryKey = 'Comp_id';
protected $fillable = ['industrylink_id', 'region_id','companyname','contactno','regno','vatno','salaryroll','numemployees'];
public function employees(){
return $this->hasMany('App\Models\Employee');
}
public function region(){
return $this->belongsTo('App\Models\Region');
还有Region模型中的hasMany
关系:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Region extends Model
{
protected $table = 'regions';
public function companies(){
return $this->hasMany('App\Models\Company');
}
}
我的 show
控制器成功地将会话行的变量传递给视图,但是当我想使用以下内容访问相关 table 数据时...(table 'region' 列 'region')
<p>Region: {{ $company->region->region }}</p> -->
...我收到错误
"Trying to get property of non-object: (View:..."
我已将我的模型位置更改为 app\Models,并且在模型和控制器中进行了所有必要的命名空间更改,并在 composer.json 中进行了自动加载。我做了一个 composer dump & config:clear 和所有其他 mvc 参考工作。
我没有为相关的 table 创建迁移,因为 table 存在并且其中有标准参考数据。我认为在模型中创建的关系就足够了吗?
非常感谢您的帮助。
通常,当变量或关系为空时会出现此错误,因此请确保公司不为空并且有区域。如果您确定公司不为空,请检查关系:
{{ empty($company->region) ? 'No region' : $company->region->region }}
你试过吗:
dd($company->region)
看看它有什么数据return。
您是否确保在 Laravel 模型关系方法中声明了现有的 table 外键?我在您的 Company
模型中看到您声明了 $primaryKey
。在您的 companies
table 中引用 Region
的外键是什么?在 belongsTo
方法的第二个参数中声明它。示例:$this->belongsTo('App\Models\Region', 'unusual_region_id');