catthr
2/4/2016 - 10:56 PM

laravel query builder orderby orderbyraw wherein wherehas pagination chunk delete truncate

laravel query builder orderby orderbyraw wherein wherehas pagination chunk delete truncate

Query Builder

** Выбор всех данных**

$res = Order::all(); //Возвращает Collection
$res = Order::all()->toArray(); // только данные

Поиск по идентификатору - find

$res = Order::find(1);

Поиск по динамическому свойству

$res = Song::whereSlug($slug)->first();

Выборка по "вложенному" полю

$order = PageOrder::whereHas('status', function($query)
         {
             $query->where('name', OrderStatus::NEW_ORDER);
         })

** Условие с LIKE **

User::where('name', 'LIKE', "%$name%")

** С подзапросом к другой таблице **

$states = Condition::whereIn('id', function($query){
        $query->select('condition_id')
            ->from(with(new Apartment)->getTable())
            ->where('status', EstateStatus::Actual);
    })->get()

** С сортировкой по определенным значениям **

Нужно было в начале выводить элементы с определенным id, затем сортировать по дате В Mysql есть для этого функция FIELD(id, 2, 1, 5) asc

$pages = $pages->orderByRaw("FIELD(city_id, ". Location::getCurrentCity()->id ." ) desc")->orderBy('start');

Article::latest($column_name = 'created_at')->get() добавляет desc сортировку по полю

Article::oldest($column_name = 'created_at')->get() добавляет asc сортировку по полю

Tag::lists('name') возвращает массив только с этим полем

** Сортиврока по полю, затем записи с Null **

Нужно сортировать по полю, но в конце выдавать записи, у которых это знчение не указано

$query->orderByRaw("$sort_field is NULL")->orderBy($sort_field, $sort)

** Объединение условия **

 $pages = SitePage::whereDraft(false)
            ->where('id', '<>', $page->id)
            ->where(function($query) use ($page)
            {
                $query->where('parent_id', '<>', $page->id)->orWhereNull('parent_id');

            })
            ->lists('name', 'id');

** Паганицая **

Office::chunk(300, function ($estates) {
            foreach ($estates as $estate) {
                \Queue::pushOn('watermarks', new WatermarkEstate($estate));
            }
        });

** Удаление **

    # отключение проверки внешнего ключа
    \DB::statement("SET foreign_key_checks=0");

    foreach(Land::all() as $ap){ $ap->delete(); } # т.к надо удалить фотографии
    foreach(Apartment::all() as $ap){ $ap->delete(); }

    Land::truncate();
    Apartment::truncate();
    ImportProcess::truncate(); # дропает все строки + сбрасывает id к 1
    PriceChange::truncate();
    LogMessage::truncate();

    \DB::statement("SET foreign_key_checks=1");