Laravel - 多对多关系中的附加信息

Laravel - additional info in ManyToMany relationship

我有三个这样的表:

Car
 -id
 -name
 -production_start
 -etc

Option
 -id
 -name
 -price

Options_Cars
 -id_option
 -id_car
 -in_basic

使用这样的代码:

class Cars extends Eloquent {     
    public function options()
    {
        return $this->belongsToMany('Options','options_cars','id_car','id_option');
    }
}

如何检索视图中每个选项的 in_basic 字段?

我可能会扩展您的模式并添加另一个 table 以区分汽车的基本模型和添加了附加功能的模型,但仍将所有选项保留为构建块。例如...

Car
  -id
  -name
  -production_start
  -etc
Option
  -id
  -name
  -price
  -etc
Cars_BasicOptions
  -car_id
  -option_id
Cars_ExtraOptions
  -car_id
  -option_id

但这也让我想到了一个新的问题——因为这个选项有价格标签,所以它不再是通用的。考虑将金属喷漆作为一种选择——菲亚特 Punto 的价格与梅赛德斯 SLS-AMG 的价格相同吗?我对此表示怀疑......所以你认为的 Option 可能根本不适合成为那个通用的。根据您的业务逻辑,这样做可能更合适:

Car
  -id
  -name
  -production_start
  -etc
Option
  -id
  -car_id
  -name
  -price
  -in_basic
  -etc

当然,如果您想单独处理选项,您可以将其移动到不同的 table,例如...

Car
  -id
  -name
  -production_start
  -etc
Option
  -id
  -name
Car_Option
  -car_id
  -option_id
  -price
  -in_basic
  -etc

这可能更接近您最初的想法。有帮助吗?

http://laravel.com/docs/5.0/eloquent#working-with-pivot-tables

return $this->belongsToMany('App\Role')->withPivot('foo', 'bar');

使 $model->pivot->foo$model->pivot->bar 可供您使用。

这适用于 L4 和 L5。