В настоящий момент Laravel насчитывает уже 911 участников на GitHub, многие из них активно добавляют новый функционал. Давайте посмотрим что же ждет нас новенького в Laravel 5.2.23.
Новое правило валидации in_array
Правила валидации в laravel просто изумительная вещь, я лично заменил кучу кода в некоторых проектах на пару строк валидации.
В 5.2.23 добавлено новое правило. Оно помогает проверить что значение элемента массива содержится в другом массиве:
Validator::make( [ 'devices' => [['user_id' => 1], ['user_id' => 2]], 'users' => [['id' => 1, ['id' => 2]]] ], ['devices.*.user_id' => 'in_array:users.*.id'] );
Здесь происходит проверка того, что все значения user_id у devices соответcвуют ключам id из массива users .
У Arr::first() & Arr::last() коллбек теперь опционален
Ранее коллбек был обязателен в качестве второго параметра, теперь нет:
$array = [100, 200, 300]; // По НОВОМУ Этот код вернет 100 Arr::first($array); /** тоже самое что и **/ array_first($array); // По НОВОМУ Этот код вернет 300 Arr::last($array); /**тоже самое что и **/ array_last($array); // Можно и (как РАНЬШЕ) сделать это и получить 200 Arr::first($array, function ($key, $value) { return $value >= 150; });
Указание более одного посредника(middleware) одновременно
В контроллере теперь при указании посредника можно задать сразу несколько одной строкой.
$this->middleware(['auth', 'subscribed'], ['only' => ['getCandy']]);
Новые директивы Blade php, @endphp, и unset
Директива php позволит писать PHP выражения таким образом:
@php($count = 1) @php(++ $count) @php $now = new DateTime(); $environment = isset($env) ? $env : "testing"; @enphp
unset — всего лишь обертка для unset().
@unset($count)
Возможность переопределять основные директивы Blade
До версии 5.2.23 было невозможно расширять Blade и переопределять основные директивы, теперь любое ваше расширение может переопределить любую директиву.
Новый почтовый драйвер для SparkPost
Новый метод monthlyOn() для описания задач по расписанию
$schedule->call(function () { DB::table('shopping_list')->delete(); })->monthlyOn(4, '12:00');
Новый метод app()->isLocale()
// Вместо этого if (app()->getLocale() == 'en') // можно сделать if (app()->isLocale('en'))
Выборки по JSON полям в MySQL 5.7 при помощи построителя запросов
В MySQL 5.7 появился новый тип столбца — JSON, В Laravel 5.2.23 можно делать выборки по этим полям также свободно как и обычно.
Представим, что у нас есть таблица users с колонкой name типа JSON, поле содержит значения типа:
{"en":"name","ar":"nom"}
Теперь можно составить подобное условие
User::where('name->en', 'name')->get(); // Углубиться в структуру JSON можно при помощи оператора `->`. User::where('contacts->phone->home', 1234);
Новые методы для тестирования seeElement() и dontSeeElement()
Если на странице есть такой элемент
<image width="100" height="50">
Можно проверить его наличие при помощи такого теста:
$this->seeElement('image', ['width' => 100, 'height' => 50]);
Или проверить отсутствие элемента c классом video
$this->dontSeeElement('image', ['class' => 'video']);
Малоизвестные плюшки
Вы знали, что уже можно делать так?
User::whereNameAndEmail('jon', 'jon@theWall.com')->first(); User::whereNameAndEmailOrPhone('jon', 'jon@theWall.com', '123321')->first(); DB::table('users')->whereEmailOrUsername('mail@mail.com', 'themsaid')->first();
ссылка на оригинал статьи https://habrahabr.ru/post/278935/
Добавить комментарий