Laravel: есть ли способ удалить предложения БД? - PullRequest
0 голосов
/ 09 июня 2018

Допустим, моя модель магазина имеет отношения к продукту следующим образом:

// shop model class

public function products()
{
    return $this->hasMany(Model\Product::class)
        ->orderBy('name');
}

Есть ли способ, которым код клиента, такой как мой контроллер, может удалить предложение orderBy()?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018
public function products($isOrder = true)
{
    $hasMany = $this->hasMany(Model\Product::class);
    return ($idOrder) ? $hasMany->orderBy('name') : $hasMany;
}

но вы можете использовать это только с экземпляром $ shop;

$shop->products(false)->...; // your query to get result
0 голосов
/ 09 июня 2018

Да, есть способ сделать это, скажем, в вашем контроллере вы хотите получить некоторые продукты

\App\Products::latest()->getQuery();

getQuery() - это метод построения запросов, который содержит все группировки, выборки, заказы, где, соединения и т. д. для запроса, к которому вы обращаетесь или пытаетесь создать.

Таким образом, вы можете сбросить порядок так:

\App\Products::latest()->getQuery()->orders= [];

, так как в Laravel eloquent построитель запросов выбирает, группируя, порядок хранится в виде массивов значений ключей, которые вы просто устанавливаете в пустой массив для сброса всех предыдущих состояний.

Например, группировка:

\App\Products::latest()->getQuery()->groupings =[];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...