繁体   English   中英

如何将表用户,商品和汽车与关系MySQL Laravel连接

[英]How to connect table User, Offers and Car with relation mysql Laravel

我有三个必须连接的桌子。 用户,汽车,报价。 每辆车都有很多优惠。 用户可以有很多车(即连接)。 我现在的任务是将Car与他们的报价和用户联系起来,但是我现在有点困惑。 看我的迁移和模型。 问题很简单,如何将汽车与优惠和用户联系起来。 一个用户可以发送一个报价。

汽车迁移:

    $table->bigIncrements('id');
    $table->string('car_type');
    $table->string('mark');
    $table->longText('car_accessories');
    $table->unsignedInteger('user_id');
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->timestamps();

提供迁移:

    $table->increments('id');
    $table->integer('price');
    $table->unsignedSmallInteger('user_id');
    $table->unsignedSmallInteger('car_id');
    $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    $table->foreign('car_id')->references('id')->on('cars')->onDelete('cascade');
    $table->timestamps();

汽车模型:

public function user() {
        return $this->belongsTo('App\User');
    }

用户模型:

public function cars(){
    return $this->hasMany('App\Car', 'user_id');
}

优惠模式:

?

正如你所说 :
1个 用户使用 汽车
1个 用户1个 提议
1 很多 优惠

因此,这里有3个关系,对于每个关系,您还必须声明the inverse 因此,这里总共必须有6个关系函数。

用户模型:

public function cars(){
    return $this->hasMany('App\Car', 'user_id');
}

public function offer(){
    return $this->hasOne('App\Offer');
}

汽车模型 :

public function user() {
        return $this->belongsTo('App\User');
    }

public function offers() {
         return $this->belongsTo('App\Offer');
    }

优惠模式:

public function car() {
     return $this->belongsTo('App\Car');
}
public function user() {
    return $this->belongsTo('App\User');
}

每辆车一个用户可以发送一个优惠吗?

在您的优惠模型中,您将具有:

public function user() {
    return $this->belongsTo(User::class);
}

public function car() {
    return $this->belongsTo(Car::class);
}

然后在您的汽车模型中可以添加“报价”关系:

public function offer() {
    return $this->belongsTo(Offer::class);
}

要检索用户完成的每辆汽车的报价,您可以像这样进行操作:

User::find(1)->with('cars.offer')->get(); 

对于“报价”和“汽车模型”关系,这取决于您要如何连接它们,这是我正在考虑的解决方案:

  1. 用户有一个要约,而汽车有一个要约,并且此要约属于一个用户和一辆汽车。 offer_table(id,价格,user_id,car_id)cars_table(id,car_type,mark,car_accessories)

用户模型

 public function offer()
{
    return $this->hasOne('App\Offer');
}

优惠模式

 public function car()
{
    return $this->belongsTo('App\Car');
}
public function user()
{
    return $this->belongsTo('App\User');
}

汽车模型

 public function offer()
{
    return $this->hasOne('App\Offer');
}

2.用户有一个要约,而汽车有许多要约,并且此要约属于一个用户和一辆汽车。 offer_table(id,价格,user_id,car_id)cars_table(id,car_type,mark,car_accessories)

用户模型

 public function offer()
{
    return $this->hasOne('App\Offer');
}

优惠模式

 public function car()
{
    return $this->belongsTo('App\Car');
}
public function user()
{
    return $this->belongsTo('App\User');
}

汽车模型

 public function offer()
{
    return $this->hasMany('App\Offer');
}
  1. 用户有一个要约,汽车有许多要约,每个要约属于一个用户和多辆汽车。 offer_table(标识,价格,用户ID)cars_table(标识,car_type,mark,car_accessories)数据透视表[cars_offers](id,offer_id,car_id)

用户模型

 public function offer()
{
    return $this->hasOne('App\Offer');
}

优惠模式

public function car()
{
    return $this->belongsToMany('App\Car');
}
public function user()
{
    return $this->belongsTo('App\User');
}

汽车模型

 public function offer()
{
    return $this->belongsToMany('App\Offer');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM