建立这种多种关系的最佳方式是什么?

时间:2014-11-10 18:00:42

标签: laravel laravel-4

我有供应商,州和城市的表格。创建供应商时,您可以选择州和几个城市。

最初我正在对城市进行序列化,但搜索变得很困难,所以我想我会把它分解出去。

到目前为止,我的想法是在我的供应商表上

  

vendor_location_id

在我的供应商位置表中我将

  

vendor_id state_id city_id

现在,当我创建供应商时,我需要一种方法来填充vendor_location_id,vendor_id,state_id和city_id。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

如果供应商位置表中有vendor_id,则供应商表中不需要vendor_location_id。

继承人我会怎么做:

Vendors
• id
• name

Cities
• id
• name
• state_id

States
• id
• name

VendorCity
• id
• vendor_id
• city_id

那么关系:

class Vendor extends \Eloquent {
    public function cities()
    {
        return $this->belongsToMany('City');
    }
}

class City extends \Eloquent {
    public function state()
    {
        return $this->belongsTo('State');
    }

    public function vendors()
    {
        return $this->belongsToMany('Vendor');
    }
}

关于附加它们 -

$city = City::find(1);
$vendor = Vendor::create(['name' => 'Vendor Name']);
$vendor->cities()->attach($city->id);