我无法找到将相关数据传递给视图的看似简单问题的解决方案。我有一个属于'Regions'的模型'Companies'。
我在公司模型中创建了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
控制器将会话行的变量成功传递给视图,但是我想要使用以下内容访问相关的表数据...(表'region',列'region')
<p>Region: {{ $company->region->region }}</p> -->
...我收到了错误
“试图获取非对象的属性:(查看:...”
我已将模型位置更改为app \ Models,并且我已在模型和模型中进行了所有必要的命名空间更改。控制器,以及composer.json中的自动加载。我做了一个作曲家转储&amp; config:clear,所有其他mvc引用都有效。
我没有为相关表创建迁移,因为表存在并且其中包含标准引用数据。我假设在模型中创建的关系是否足够?
我很感激一些帮助。
答案 0 :(得分:2)
通常,当变量或关系为空时,您会收到此错误,因此请确保公司不为空并且具有区域。如果你确定公司不是空的,只需检查关系:
{{ empty($company->region) ? 'No region' : $company->region->region }}
答案 1 :(得分:1)
您是否确保在Laravel Model关系方法中声明现有的表外键?我在您的Company
模型中看到您声明了$primaryKey
。什么是引用Region
表中companies
的外键?在belongsTo
方法的第二个参数中声明它。示例:$this->belongsTo('App\Models\Region', 'unusual_region_id');
答案 2 :(得分:-1)
您是否尝试过:
dd($company->region)
并查看它返回的数据。