LARAVEL - 错误关系(查看)

时间:2017-04-05 14:30:51

标签: laravel view

我有一个关系错误,我不明白为什么; 你能帮帮我解决这个问题吗?感谢

Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name (View: C:\wamp64\www\xxxxxx\resources\views\front\sujet\show.blade.php)

视图中的代码:

<div>{{$poste->users()->name}}</div>

模型中的代码:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Poste extends Model
{
    //
     public function sujets()
     {
        return $this->belongsTo('App\Models\Sujet');
     }

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

控制器:

$unSujet=Sujet::find($id);
        $lesPostes = Poste::orderBy('id')->where('sujet_id', $id)->paginate(15);
        return view('front/sujet/show', compact ('unSujet', 'lesPostes'));

并且dd($ poste-&gt; users())返回:(在视图中使用$ post直接在foreach中测试)

BelongsTo {#268 ▼
  #foreignKey: "users_id"
  #otherKey: "id"
  #relation: "users"
  #query: Builder {#267 ▶}
  #parent: Poste {#261 ▼
    #connection: null
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    #perPage: 15
    +incrementing: true
    +timestamps: true
    #attributes: array:7 [▼
      "id" => 1
      "description" => """
        Salut a TOUS Cest m on 1er sujet et mon 1er poste. \r\n
        \r\n
        mais ya un gros bug, c'est que ca écrit en majuscule tout seul ou alors c'est seulement pendant l'edition de ce message, mais c'est étrange et j'aimerais pouvoir écrire normalement :) !\r\n
        \r\n
        Merci,\r\n
        coardialement le bg.
        """
      "created_at" => "2017-03-31 11:14:48"
      "updated_at" => "2017-03-31 11:14:48"
      "signale" => 0
      "sujet_id" => 9
      "user_id" => 2
    ]
    #original: array:7 [▶]
    #relations: []
    #hidden: []
    #visible: []
    #appends: []
    #fillable: []
    #guarded: array:1 [▶]
    #dates: []
    #dateFormat: null
    #casts: []
    #touches: []
    #observables: []
    #with: []
    +exists: true
    +wasRecentlyCreated: false
  }
  #related: User {#266 ▼
    #connection: null
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    #perPage: 15
    +incrementing: true
    +timestamps: true
    #attributes: []
    #original: []
    #relations: []
    #hidden: []
    #visible: []
    #appends: []
    #fillable: []
    #guarded: array:1 [▶]
    #dates: []
    #dateFormat: null
    #casts: []
    #touches: []
    #observables: []
    #with: []
    +exists: false
    +wasRecentlyCreated: false
  }
}

3 个答案:

答案 0 :(得分:0)

将关系名称更改为user。 Laravel使用关系名称生成外键,用于搜索相关数据。

然后,您可以通过添加first()方法获取对象:

{{ $poste->user()->first()->name }}

或者你可以这样做:

{{ $poste->user->name }}

答案 1 :(得分:0)

您能否显示{{$ poste-&gt; users}}

给出的输出内容

从你输出

#related: User {#266 ▼
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []

它表明该关系找不到相关的用户对象。

打印此结果

{{ $poste->user()->first() }}

如果这给出了空数组作为输出而不是你需要它将确认该poste不属于有效的user_id

答案 2 :(得分:0)

您的模型外观与用户无关 在模特帖子:

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

在型号用户

public function postes()
{
    return $this->hasMany('App\Models\Poste', 'user_id');
}

您可以访问{{$ poste-&gt; user-&gt; name}}

祝你好运