laravel模型关系5.5

时间:2018-02-01 04:10:11

标签: laravel laravel-5.5

1。用户
1. id 2.姓名

2。类
1. id 2. category_name
3. user_id

第3。讯息
1. id 2. post_title
3. category_id

所以现在我想在我看来显示数据 例如:post_title-> category_name-> user_name

如何处理模型中的laravel查询关系

2 个答案:

答案 0 :(得分:1)

定义关系

class Post extends Model
{
    return $this->blongsTo(Category::class);
}

class Category extends Model
{
    return $this->blongsTo(User::class);
}

现在

$post = with('category.user')->whereId(1)->first(); //1 is my guess

$post->category()->user->name();

虽然您可以像这样访问用户的帖子

,但它似乎也是has-many-through关系
$user->posts;

为此您需要定义:

class User extends Model
{
/**
 * Get all of the posts for the user.
 */
public function posts()
{
    return $this->hasManyThrough(Post:class, Category::class);
}
}

答案 1 :(得分:0)

$Query=DB::select('select posts.post_title,categories.category_name,
users.name from posts,categories,users where users.id=categories.user_id and
categories.id=posts.category_id');

如果你不使用DB :: 你可以使用你的模型

$Query = Users::select('users.name', 'posts.post_title', 'categories.category_name')
        ->join('categories', function ($join) {
             $join->on('categories.user_id', '=', 'users.id')
                  ->join('categories.id', '=', 'posts.category_id');
    })
        ->get();

检查拼写表名称和列 但如果数据中有重复,则无法正常工作