Php 奇怪的问题:试图获得财产';名称';Laravel刀片中非对象的应用
我有四个表:用户、国家、地区和乡镇 在User.php模型中Php 奇怪的问题:试图获得财产';名称';Laravel刀片中非对象的应用,php,mysql,laravel,laravel-blade,Php,Mysql,Laravel,Laravel Blade,我有四个表:用户、国家、地区和乡镇 在User.php模型中 public function country() { return $this->belongsTo(Country::class, 'country_id'); } public function region() { return $this->belongsTo(Region::class, 'region_id'); } public function township() { ret
public function country() {
return $this->belongsTo(Country::class, 'country_id');
}
public function region() {
return $this->belongsTo(Region::class, 'region_id');
}
public function township() {
return $this->belongsTo(Township::class, 'township_id');
}
在Country.php、Region.php和town.php模型中
public function users() {
return $this->hasMany(User::class);
}
在users.blade中,我尝试打印用户的位置
{{ $user->township->name }}, {{ $user->region->name }}, {{ $user->country->name }}
而且,我得到试图获取非对象的属性“name”
异常
当我试图打印国家
,地区
和城镇
时,比如{{{$user->town->name},{{{$user->region->name},{{{$user->country->name}
,它的打印方式如下-
{"id":1,"region_id":1,"name":"Hlaing"}, {"id":1,"country_id":1,"name":"Yangon"}, {"id":1,"name":"Myanmar"}
它只在远程服务器上获得此异常,在本地计算机上没有问题
我有三个视图用于所有用户、已批准用户和待定用户。我有users.blade.php、users_approved.blade.php和users_pending.blade.php。这些刀片类似,只是标题文本不同。“已批准用户”视图中没有问题(也包括远程服务器)
在MainController.php中,我有这些函数-
function users(Request $request) {
$users = User::all();
return view('users', [ 'users' => $users ]);
}
function users_approved(Request $request) {
$users = User::where('approval_status', 'APPROVED')->get();
return view('users_approved', [ 'users' => $users ]);
}
function users_pending(Request $request) {
$users = User::where('approval_status', 'PENDING')->get();
return view('users_pending', [ 'users' => $users ]);
}
我已经尝试过-
php-artisan-view:clear
,php-artisan-cache:clear
,php-artisan-config:clear
,如果您的问题只发生在远程机器上,可能是因为存储在那里的数据不同。特别是,对于某些用户,由于某些原因(遗留记录、代码错误、不使用事务等),他们的某些关系可能无法设置
上建议的一种解决方法是为那些绑定的模型提供默认值,在DB中缺少关系时使用。例如:
public function country() {
return $this->belongsTo(Country::class, 'country_id')->withDefault([
'name' => 'Country Not Set',
])
}
public function region() {
return $this->belongsTo(Region::class, 'region_id')->withDefault([
'name' => 'Region Not Set',
])
}
。。。等。另一个选项是运行DB查询以获取远程计算机上的所有用户,条件如下:
WHERE country_id IS NULL
OR region_id IS NULL
OR township_id IS NULL
根据您的需要,您可以修改这些记录或以某种方式禁用它们。您是否确保所有用户都有一个乡镇、国家和地区连接到它们?您完全正确!。当我检查用户列表时,有一个挂起的用户id=NULL。谢谢!