【问题标题】:Laravel 5, Trying to get property of non-objectLaravel 5,试图获取非对象的属性
【发布时间】:2016-01-13 15:32:40
【问题描述】:

我的控制器:

 public function show($id){
    $user_id_1_connections = Connection::whereUser_id_1AndConnection_status($id, 1)->get();
    $user_id_2_connections = Connection::whereUser_id_2AndConnection_status($id, 1)->get();
    return view('connection.showConnection',['user_id_1_connections' => $user_id_1_connections, 'user_id_2_connections' => $user_id_2_connections]);
} 

我的模特:

protected $table = 'connections';
protected $fillable = ['user_id_1','user_id_2','connection_status'];

public function user()
{
    return $this->belongsTo('App\User');
}

我的刀片:

@foreach($user_id_1_connections as $user_id_1_connection)
{{ $user_id_1_connection->user->name }}
{{ $comment->user->name }}
@endforeach
@foreach($user_id_2_connections as $user_id_2_connection)
{{ $user_id_2_connection->user->name }}
@endforeach

我已经为 user_id_1 和 user_id_2 创建了外键到 users 表。

$table->integer('user_id_1')->unsigned();
        $table->foreign('user_id_1')->references('id')->on('users')->onDelete('cascade');
        $table->integer('user_id_2')->unsigned();
        $table->foreign('user_id_2')->references('id')->on('users')->onDelete('cascade');

但是当我运行这段代码时。它显示错误: 试图获取非对象的属性。

【问题讨论】:

  • 这可能发生在任何地方 - 您应该在错误消息中包含文件名和行号,请​​先发布该信息。

标签: laravel laravel-5 laravel-5.1 blade


【解决方案1】:

这里的问题可能是您没有为每个连接分配user,所以不是:

{{ $user_id_1_connection->user->name }}

你应该这样写:

{{ $user_id_1_connection->user ? $user_id_1_connection->user->name : 'unknown' }}

当您使用$x->y->z 语法时,所有其他地方都相同。要显示z,您应该确保$x->y 不为空

【讨论】:

  • 是的,这是正确的,但我已经为上面发布的同一个用户表创建了两个外键。因此,我想显示外部引用为 user_id_1 和 user_id_2 的用户的名称。如何做到这一点??
  • 您必须创建 2 个用户关系,并在每个定义为第二个参数有效列(user_id_1 或 user_id_2)
  • 公共函数 user_id_1() { return $this->belongsTo('App\User', 'user_id_1'); } 公共函数 user_id_2() { return $this->belongsTo('App\User', 'user_id_2'); }
  • 是的,我目前在我的模型中建立了这种关系,我正在调用 ''@foreach($user_id_2_connections as $user_id_2_connection) {{ $user_id_2_connection->user_id_2 ? $user_id_2_connection->user_id_2->name : 'unknown' }} @endforeach" 在我的刀片中,但它显示相同的错误。
  • 请创建新问题并在此包含您的整个模型和描述
猜你喜欢
  • 2015-12-04
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2017-03-20
  • 2014-03-25
  • 2015-01-25
相关资源
最近更新 更多