Laravel中2张表是通过多个字段关联的,模型关系该怎么写?

比如表A有x_id,y_id 表B中也有x_id, y_id, A表中的2个字段1对多个B表。

select XXX from A left join B on A.x_id = B.x_id and A.y_id = B.y_id

laravel中有belongsTo, belongsToMany,找相关文档应该是满足不了我这种需求的。关键是这里有个And关联关系。

阅读 8.4k
2 个回答
use Illuminate\Database\Eloquent\Model;

class A extends Model
{
    public function b()
    {
        return $this->belongsTo('B', 'x_id','x_id ')->where('y_id', $this->y_id);
    }
}

自行修改

重新设计数据库表结构吧,给表A增加一个自增的主键,表A中的x_id和y_id联合唯一,UNIQUE KEY A_x_id_y_id_UNIQUE (x_id, y_id)。然后join的时候就简单了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题