You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Eloquent中配置projects、jobs、categories表关联实现指定查询问题

关联关系配置方案

以下以最常用的Laravel Eloquent ORM为例给出配置方案,其他ORM框架核心逻辑一致,均为配置多对多关联并指定jobs为中间关联表即可:

1. Project模型关联配置

首先在Project模型中定义对应关联:

class Project extends Model
{
    // 定义Project与Job的一对多基础关联
    public function jobs()
    {
        return $this->hasMany(Jobs::class);
    }

    // 定义Project与Category的多对多关联,通过jobs中间表跳转
    public function categories()
    {
        // 若jobs表中外键名不是默认的project_id、category_id,可按顺序补充第3、4个参数手动指定外键
        return $this->belongsToMany(Category::class, 'jobs');
    }
}

需要传入分类ID查询对应项目时,使用whereHas方法过滤即可:

// $categoryId为传入的目标分类ID
$targetProjects = Project::whereHas('categories', function ($query) use ($categoryId) {
    $query->where('id', $categoryId);
})->get();

2. Category模型关联配置

在Category模型中定义关联后即可直接查询关联项目:

class Category extends Model
{
    // 定义Category与Job的一对多基础关联
    public function jobs()
    {
        return $this->hasMany(Jobs::class);
    }

    // 定义Category与Project的多对多关联,通过jobs中间表跳转
    public function projects()
    {
        return $this->belongsToMany(Project::class, 'jobs');
    }
}

配置完成后直接调用关联属性即可拿到指定分类下的所有项目:

// 获取ID为$categoryId的分类下所有关联项目
$projects = Category::find($categoryId)->projects;

内容的提问来源于stack exchange,提问作者Interact

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:36:03