我有三个必须连接的表。用户,汽车,报价。每辆车都有很多优惠。用户可以有很多车(即连接)。我现在的任务是将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');
}
优惠模式:
?
答案 0 :(得分:3)
如您所说:
1 用户到很多 汽车
1 用户到 1 提供
1 Car 到很多 优惠
因此,这里有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');
}
答案 1 :(得分:1)
一个用户可以每辆车发送一个优惠吗?
在您的优惠模型中,您将拥有:
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();
答案 2 :(得分:0)
对于“报价”和“汽车模型”关系,这取决于您要如何连接它们,这是我在考虑的解决方案:
用户模型
'homepage'
报价模型
public function offer()
{
return $this->hasOne('App\Offer');
}
汽车型号
public function car()
{
return $this->belongsTo('App\Car');
}
public function user()
{
return $this->belongsTo('App\User');
}
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 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');
}