我想在帖子和用户之间建立一种关系,以便能够通过$ user-> posts()获取所有帖子,并通过$ post-> user()获取用户
我设置了belongsTo函数,但是我需要一种方法,以便当我获得用户时,可以以某种方式找到他的所有帖子 同样当我收到我使用\ App \ Post :: find(1)-> user()-> name的帖子时,它什么也不返回
帖子模型
class Post extends Model
{
public function user() {
return $this->belongsTo('App\User',null,'userid');
}
}
后数据库结构
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->longText('body');
$table->string('thumbnail');
$table->integer('views');
$table->integer('likes');
$table->bigInteger('userid');
$table->integer('categoryid');
$table->timestamps();
});
除了laravel默认值外,用户模型什么都没有,因为用户没有引用帖子的列
用户数据库结构为Laravel默认值
Foreach代码:
@foreach(\App\Post::find(4)->user() as $user)
<p>{{$user->name}}</p>
@endforeach
我希望它能获得用户名,但是没有。
答案 0 :(得分:1)
使用hasMany
关系。
在用户模型内:
public function posts()
{
return $this->hasMany(Post::class, 'userid', 'id');
}
现在,您可以获取所有用户帖子:
$posts = User::find($someId)->posts()->get();
//or
$posts = User::find($someId)->posts;
的文档
希望有帮助。
答案 1 :(得分:0)
在用户模型中
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\User;
class Post extends Model
{
/**
* Get the comments for the blog post.
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
在用户模型中
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Post;
class User extends Model
{
/**
* Get the posts for the user.
*/
public function comments()
{
return $this->hasMany('App\Post');
}
}
现在您可以以App\User::find(id)->posts
的身份访问用户的帖子