【问题标题】:Laravel, Using two user relationships in modelLaravel,在模型中使用两个用户关系
【发布时间】:2016-01-13 17:41:53
【问题描述】:

连接模型:

protected $table = 'connections';
protected $fillable = ['user_id_1','user_id_2','connection_status'];
public function user_id_1()
{
    return $this->belongsTo('App\User', 'user_id_1');
}

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

控制器:

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]);
}

刀片:

@foreach($user_id_1_connections as $user_id_1_connection)
{{ $user_id_1_connection->user_id_1 ?  $user_id_1_connection->user_id_1->name : 'unknown' }}
@endforeach
@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

我在我的模型 Connection.php 中与用户建立两个关系。我收到错误消息:“尝试获取非对象的属性”在刀片的第 2 行和第 5 行。

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-5.1


    【解决方案1】:

    第一个变化:

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

    进入:

    public function user1()
    {
        return $this->belongsTo('App\User', 'user_id_1');
    }
    
    public function user2()
    {
        return $this->belongsTo('App\User', 'user_id_2');
    }
    

    避免表列和关系之间的冲突

    而不是这个:

    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]);
    }
    

    你可以这样做:

    public function show($id){
      return view('connection.showConnection', ['connection' => Connection::findOrFail($id)]);
    }
    

    现在您的模板可能如下所示:

    User 1 name: {{ $connection->user1 ? $connection->user1->name : 'unknown' }}
    User 2 name: {{ $connection->user2 ? $connection->user2->name : 'unknown' }}
    

    但老实说,很难得到你真正想要实现的目标——你正在使用奇怪的函数 whereUser_id_1AndConnection_status 你不应该这样做可能你应该仔细阅读 Laravel 的 relationships documentation

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2019-08-01
      • 2015-10-02
      • 2017-07-30
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多