laravel fill selectbox with foreign key

时间:2015-11-14 00:22:56

标签: php laravel eloquent

有3个表

Sizes
id
name

Products
id
name

Product_sizes
id
product_id
size_id

我想填充一个id为product_sizes的selectbox和外键连接表大小的名称。

例如:

product_sizes.id    1
sizes.name          medium

在产品尺寸中,size_id可以找到介质。 我怎样才能在列表中输入名称值?

我目前拥有什么

我可以用

获得正确的行
 $sizes =  $product->sizeAvailable()->lists('pr', 'size_id');

其中sizeAvailable是一个返回所选产品的所有product_sizes的关系。

1 个答案:

答案 0 :(得分:1)

首先,您不需要数据透视表中的id字段,因为您可以使用复合键product_id, size_id唯一标识每一行。 产品可以属于许多尺寸尺寸可以属于许多产品,因此您不应该' t有重复的行。

每个模型的关系如下:

class Product extends Model {
    public function sizeAvailable() {
        return $this->belongToMany('Size', 'product_sizes');
    }
}

class Size extends Model {
    public function products() {
        return $this->belongToMany('Product', 'product_sizes');
    }
}

最后,在您的视图中,您可以使用Blade功能生成选择框:

<select>
    @foreach($product->sizeAvailable() as $size)
        <option value="{{ $size->id }}">{{ $size->name }}</option>
    @endforeach
</select>