Dic*_*han 1 php laravel eloquent laravel-5
就我的情况而言,我有两个具有一对多关系的表(集合、产品)。
通过代码示例,它是:
$collectionProducts = collections::join('products', 'products.collection_id', '=', 'collections.collection_id')->get();
Run Code Online (Sandbox Code Playgroud)
我目前的结果是:
[
Collection 1 Product 1 => [
...Product Info
],
Collection 1 Product 2 => [
...Product Info
],
Collection 2 Product 1 => [
...Product Info
],
Collection 2 Product 3 => [
...Product Info
],
]
Run Code Online (Sandbox Code Playgroud)
我想让结果像:
[
Collection 1 => [
Product 1 => [
...Product Info
],
Product 2 => [
...Product Info
],
],
Collection 2 => [
Product 1 => [
...Product Info
],
Product 3 => [
...Product Info
],
]
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到我的预期结果?我知道这是常见用法,如果之前有任何重复的问题,我很抱歉,因为我找不到任何匹配的问题。
多谢。
Laravel 及其 Eloquent 关系非常擅长让我们轻松实现这一点,而无需繁琐的连接。
在您的Collection模型上创建与产品的关系:
public function products()
{
return $this->hasMany("App\Product");
}
Run Code Online (Sandbox Code Playgroud)
然后,在绘制集合时,您可以将产品包含在急切加载中,以便对数据库进行一次简单调用:
$collections = Collection::with('products')->get();
Run Code Online (Sandbox Code Playgroud)
你已经得到了你想要的收藏。您可以从循环中提取所有产品$collection或从这里提取您喜欢的任何产品。
刀片视图中的示例:
@foreach($collections as $collection)
@foreach($collection->products as $product)
{{ $product->name }} //etc
Run Code Online (Sandbox Code Playgroud)