Как пишется eloquent pivot consult? - PullRequest
1 голос
/ 17 марта 2020

Я разрабатываю эккомер. Дело в том, что я сделал функцию belongsToMany в user модели для тележки, чтобы сохранить много продуктов, назвал ее carrito. Но в контроллере, когда я хочу получить id продуктов, выдает ошибку, как будто атрибуты не существуют. Я хочу взять данные из существующей таблицы carts (с функцией carrito) и вставить ее в новую таблицу с именем pedidos

, вот код ...

Модель: Пользователи

public function carrito(){
    return $this->belongsToMany(Product::class, 'cart')
                ->withPivot('product_id', 'user_id', 'quantity');

}

Контроллер

public function create(Request $request)
{
    $user =Auth::user();
    $producto = $user->carrito;    

    Pedido::create([
        'user_id'=>Auth::User()->id,
        'puntosretiros_id' => $request->get('puntoE'),
        'product_id' => $producto->product_id,
        'quantity' => $producto->quantity,
        'total'=> $request->input('total'),
    ]);    
    $pedido->save();
    return redirect('/');
}

1 Ответ

0 голосов
/ 17 марта 2020

Если вам нужен совет, я бы предложил несколько небольших изменений, чтобы сделать ваш код более понятным:


1) Модели

Пользователь

A User имеет Cart

/**
 * A User has a cart.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasOne
 */
public function cart()
{
    return $this->hasOne(Cart::class);
}

Корзина

A Cart принадлежит User

A Cart имеет много Product s

/**
 * A Cart belongs to a User.
 *
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function cart()
{
    return $this->belongsTo(User::class);
}

/**
 * A Cart has many Products.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function products()
{
    return $this->belongsToMany(Product::class)->withPivot(['quantity']);
}

A Product может быть много Cart s

/**
 * A Product can be in many Carts.
 *
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function products()
{
    return $this->belongsToMany(Cart::class)->withPivot(['quantity']);
}

2) Отношения

С вашими моделями, настроенными таким образом, вы теперь можете получить доступ к своим данным следующим образом:

// Load a user with all their carts and products
$user = User::with(['carts.products])->find(1);

// Get a specfic cart
$cart = $user->carts->first();

// Get the products in their cart
$products = $cart->products;

// Get quantity of the first product in the cart
$quantity = $products->first()->pivot->quantity;

Теперь все это только основы c пример, но демонстрация того, что вы можете сделать с несколькими отношениями и Pivot моделями и атрибутами.

...