Laravel 尝试在尝试$blog时获取非对象的属性->;用户->;名称
在我的模型用户中Laravel 尝试在尝试$blog时获取非对象的属性->;用户->;名称,laravel,Laravel,在我的模型用户中 public function blogs(){ return $this->hasMany('App\Blog'); } 在我的模型博客中 public function user(){ return $this->belongsTo('App\User','user_id'); } 在我的博客控制器中 public function show($id) { $blog = Blog
public function blogs(){
return $this->hasMany('App\Blog');
}
在我的模型博客中
public function user(){
return $this->belongsTo('App\User','user_id');
}
在我的博客控制器中
public function show($id)
{
$blog = Blog::find($id);
dd($blog->user->name);
return view('admin.pages.blogs.show',compact('blog'));
}
数据库表用户(id、角色\u id、名称)
如果role_id=1(admin),则结果$blog->user->name为空
若role_id=2(author),那个么结果$blog->user->name就是用户的名字
当角色_id=1时,如何修复您需要从
博客
模型中删除用户_id
public function user()
{
return $this->belongsTo(User::class);
}
UPD。在任何情况下,role\u id
都无关紧要。因此,您需要确保DB包含相关记录。例如:
blogs:
id user_id text
1 123 '...'
users:
id name
123 'Linh'
首先,您要更改
博客
用户
和角色
迁移
博客迁移
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->string('title');
$table->string('slug')->unique();
$table->string('image');
$table->string('body');
$table->tinyInteger('status')->default(0);
$table->tinyInteger('is_approved')->default(0);
$table->integer('view_count')->default(0);
$table->timestamps();
});
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('role_id')->default(2);
$table->foreign('role_id')->references('id')->on('roles');
$table->string('name');
$table->string('username')->unique();
$table->string('email')->unique();
$table->string('password');
$table->string('image')->default('default.png');
$table->text('about')->nullable();
$table->rememberToken();
$table->timestamps();
});
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
用户迁移
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->string('title');
$table->string('slug')->unique();
$table->string('image');
$table->string('body');
$table->tinyInteger('status')->default(0);
$table->tinyInteger('is_approved')->default(0);
$table->integer('view_count')->default(0);
$table->timestamps();
});
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('role_id')->default(2);
$table->foreign('role_id')->references('id')->on('roles');
$table->string('name');
$table->string('username')->unique();
$table->string('email')->unique();
$table->string('password');
$table->string('image')->default('default.png');
$table->text('about')->nullable();
$table->rememberToken();
$table->timestamps();
});
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
角色迁移
Schema::create('blogs', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->string('title');
$table->string('slug')->unique();
$table->string('image');
$table->string('body');
$table->tinyInteger('status')->default(0);
$table->tinyInteger('is_approved')->default(0);
$table->integer('view_count')->default(0);
$table->timestamps();
});
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('role_id')->default(2);
$table->foreign('role_id')->references('id')->on('roles');
$table->string('name');
$table->string('username')->unique();
$table->string('email')->unique();
$table->string('password');
$table->string('image')->default('default.png');
$table->text('about')->nullable();
$table->rememberToken();
$table->timestamps();
});
Schema::create('roles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
用户模型
public function blogs(){
return $this->hasMany('App\Blog');
}
public function user(){
return $this->belongsTo('App\User');
}
博客模式
public function blogs(){
return $this->hasMany('App\Blog');
}
public function user(){
return $this->belongsTo('App\User');
}
BlogController
public function show($id)
{
$blog = Blog::find($id);
dd($blog->user->name);//check
return view('admin.pages.blogs.show',compact('blog'));
}
blogs
table needuser\u id
你检查了吗?你确定角色id=1的用户有blog吗?是的,我在blogs table中的user\u id不为null我看不出角色id与此有什么关系,你的id1
用户是否存在?方法下面的第二个参数是“foreign\u key”,不是本地键。对于此关系,默认使用user\u id
对关系方法的名称进行修改,因此这与$this->belongsTo('App\user','id','user\u id')相同代码>按默认设置不正确。。。查看手机
型号及其用户
关系。。。“Eloquent通过检查关系方法的名称并在方法名称后面加上\u id
”确定默认外键名称。这些段落中“parent”的措词很难理解文档中的内容。。。好主意:)