Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 奇怪的问题:试图获得财产';名称';Laravel刀片中非对象的应用_Php_Mysql_Laravel_Laravel Blade - Fatal编程技术网

Php 奇怪的问题:试图获得财产';名称';Laravel刀片中非对象的应用

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

我有四个表:用户、国家、地区和乡镇

在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() {
    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。谢谢!