как много ко многим запрос отношения в Laravel - PullRequest
0 голосов
/ 24 октября 2018

Краткое описание:

Я использую laravel 5.6

У меня проблема с во многих запросах отношения.

У меня есть 2 модели: Заказ и корзина


Код:

Корзина Модель:

class Cart extends Model
{
    public function order()
    {
        return $this->belongsToMany(Order::class);
    }
}

Модель заказа:

class Order extends Model
{
    public function carts(){

        return $this->belongsToMany(Cart::class);
    }
}

Миграция корзины:

public function up()
{
    Schema::create('carts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id')->nullable();
        $table->integer('price')->nullable();
        $table->integer('pass')->default(0);

    });
}


Вопрос:

Как получить заказы, в которых их поле pass находится в Cart = 1 в?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Try Like this,

            <?php

            namespace App;

            use Illuminate\Database\Eloquent\Model;

            class Comment extends Model
            {
                /**
                 * Get all of the owning commentable models.
                 */
                public function commentable()
                {
                    return $this->morphTo();
                }
            }

            class Post extends Model
            {
                /**
                 * Get all of the post's comments.
                 */
                public function comments()
                {
                    return $this->morphMany('App\Comment', 'commentable');
                }
            }

            class Video extends Model
            {
                /**
                 * Get all of the video's comments.
                 */
                public function comments()
                {
                    return $this->morphMany('App\Comment', 'commentable');
                }
            }

// Доступ к этому возможен в вашем контроллере $ post = App \ Post :: find (1);

            foreach ($post->comments as $comment) {
                //
            }

Эта ссылка поможет вам, https://laravel.com/docs/5.7/eloquent-relationships#polymorphic-relations в этом случае.Надеюсь, это поможет вам.

0 голосов
/ 24 октября 2018

Во-первых, поскольку в вашей корзине много заказов, отношения должны называться "заказы" с s.

Вы показали только вашу миграцию корзины, поэтому я не могу догадаться, но Laravel также ожидает, что вы создадите "сводная таблица cart-order.

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

Order::whereHas('carts', function ($query) {
    $query->where('pass', 1);
})->get();

Подробнее о связях Eloquent многие ко многим можно прочитать в документации Laravel. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...