Laravel,四个模型的关系

时间:2019-02-28 13:07:35

标签: php laravel

我有四个模型:动物(只能是“狗”或“猫”),类别,品种和张贴。

表格数据:

动物: - ID -名称

类别: - ID - 名称 -animal_id

品种: - ID - 名称 -category_id

帖子: - ID -品种编号

我需要得到所有关于狗的信息。有什么想法吗?

更新: 我的模特:

class Animal extends Model
{

    public function categories()
    {
        return $this->hasMany(Category::class)->orderBy('name', 'ASC');
    }
}

class Category extends Model
{

    public function animal()
    {
        return $this->belongsTo(Animal::class);
    }

    public function breeds()
    {
        $this->hasMany(Breed::class)->orderBy('name', 'ASC');
    }
}

class Breed extends Model
{

    public function category()
    {
        return $this->belongsTo(Category::class);
    }

    public function posts()
    {
        return $this->hasMany(Posts::class);
    }
}

class Posts extends Model
{

    public function breed()
    {
        return $this->belongsTo(Breed::class);
    }

}

1 个答案:

答案 0 :(得分:0)

首先,您需要在雄辩的模型中正确建立关系, 这是一个代码示例,

对于后口才模型 并且发布必须具有列animal_id

public function animal(){

    return $this->belongsTo(Animal::class);
}

然后您必须查询类似

$posts = Post::whereHas('animal',function($q){
    return $q->where('name','dog');});

此后,您将获得属于动物数据的帖子,其中动物名字是dog。而且,如果您要查询当前的数据库结构,由于查询时间长且不建议使用,则不建议这样做。