Yêu cầu thg 1 25, 2021 12:25 CH 126 0 3
  • 126 0 3
0

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

Chia sẻ
  • 126 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 CÂU TRẢ LỜI


Đã trả lời thg 1 27, 2021 6:52 SA
Đã được chấp nhận
Chia sẻ
Đã trả lời thg 1 26, 2021 12:17 SA
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');

Chia sẻ
Đã trả lời thg 1 26, 2021 12:57 SA
0

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

 public function carts()
{
    return $this->belongsToMany(Cart::class, )->withPivot('cart_id', 'product_id');
}
Chia sẻ
Avatar Chilly @nhatnguyen123321
thg 1 26, 2021 3:43 SA

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí