Hỏi về truy xuất dữ liệu trong laravel
Theo như trong ảnh thì em tạo 2 model: Product, Cart. Vì 2 bảng là quan hệ n - n nên em tạo thêm bảng trung gian: cart_product( chỉ make:migrate thôi, ko tạo model). E đã thêm đc data vào bảng trung gian r: click vào 1 product => thêm id của product đó và id của cart vào bảng cart_product( thêm sp vào giỏ hàng) $product = Product::find($productId); $product->cart()->attach($cartId);
Vấn đề e đang gặp là ko biết cách truy xuất dữ liệu từ bảng trung gian ra ntn?? Thanks mn
3 CÂU TRẢ LỜI
Keyword: many to many relationship laravel Link Doc: https://laravel.com/docs/8.x/eloquent-relationships#one-to-many-inverse
Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
/**
* The carts that belong to the product.
*/
public function carts()
{
return $this->belongsToMany(Cart::class);
}
}
Query
use App\Models\Product;
$product = Product::find(1);
foreach ($product->carts as $cart) {
//
}
Chú ý: belongsToMany tự hiểu bảng trung gian là cart_product
. Để lấy được danh sách products theo cart_id thì chỉ cần làm tương tự belongsToMany bên phía Model Cart
Custom: return $this->belongsToMany(Role::class, 'product_cart', 'cart_id', 'product_id');
Bạn có thể sử dụng withPivot
nhé
public function carts()
{
return $this->belongsToMany(Cart::class, )->withPivot('cart_id', 'product_id');
}
cái này mặc định là bảng trung gian nó lấy 2 trường cart_id vs product_id r. nếu muốn định nghĩa thêm trường dữ liệu nữa thì mới dùng withPivot thui. Dù sao thì thanks nha. đc r