[英]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();
对于“报价”和“汽车模型”关系,这取决于您要如何连接它们,这是我正在考虑的解决方案:
用户模型
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');
}
用户模型
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.