Asked Jan 25th, 12:25 PM 83 0 3
  • 83 0 3
0

Hỏi về truy xuất dữ liệu trong laravel

Share
  • 83 0 3

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 ANSWERS


Answered Jan 27th, 6:52 AM
Accepted
Share
Answered Jan 26th, 12:17 AM
0

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');

Share
Answered Jan 26th, 12:57 AM
0

Bạn có thể sử dụng withPivot nhé

 public function carts()
{
    return $this->belongsToMany(Cart::class, )->withPivot('cart_id', 'product_id');
}
Share
Nguyen Nhat @nhatnguyen123321
Jan 26th, 3:43 AM

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

0
| Reply
Share