這是我的產品表的樣子,
id | name | price
-----------------
1 | soap | 20.00
這就是我的product_images表的樣子,
id | product_id | image_url
---------------------------
1 | 1 | http://someurl
2 | 1 | http://someurl
3 | 1 | http://someurl
如您所見,每個product都有很多images. 我想獲取這些資料,但product_images應該是這樣的陣列,
我所期待的,
[
{"id": 1,"name": "soap","price": 20.00,
[
{"id": 1,"image_url": "http://someurl"},
{"id": 2,"image_url": "http://someurl"},
{"id": 3,"image_url": "http://someurl"}
]
}
]
但相反,我一次只獲得一條記錄,其中包含產品的重復。這是我嘗試的方式,
return DB::table('products')
->join('product_images', 'product_images.product_id', 'products.id')
->get();
uj5u.com熱心網友回復:
使用 laravel Eloquent :關系
首先,創建兩個模型Product并ProductImage使用 php artisan 命令。然后將關系一對多添加到產品影像
php artisan make:model Product
和
php artisan make:model ProductImage
上面的命令將在以下路徑中創建兩個模型
app/Models/
所以在模型中
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
public function productImages(){
return $this->hasMany(ProductImage::class);
}
}
所以您的查詢將如下所示
$products=\App\Models\Product::with('productImages')->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513535.html
標籤:phpsql拉拉维尔
