Вещи, о которых я узнал после прочтения Laravel: Up and running


Мэтт Стауффер в настоящее время заканчивает последние штрихи в своей новой книге под названием Laravel: Up and Running. Данная книга вполне может оказаться отличным руководством для новичков фреймворка. Но даже если у вас есть некоторый опыт работы с Laravel, эта книга стоит того, что бы вы потратили на неё своё время. Даже сам Мэтт во время написания этой книги получил много интересной информации по работе с фреймворком.


За время своего отпуска я прочитал предварительную версию книги, содержащую все ожидаемые мной главы, касающиеся специфического функционала Laravel 5.3. Я могу сказать, что она очень хорошо написана и неплохо дополняет официальную документацию. Вот некоторые из вещей, которые я узнал после прочтения этой книги.

Изменение ключа роута для Eloquent модели

Рассмотрим этот маршрут:
Route::get('/newsItem/{newsItem}', 'NewsItemController@index');
По умолчанию, при использовании привязки роута к модели, Laravel будет использовать идентификатор модели, чтобы к ней обратиться. Таким образом, URL /newsItem/1 будет работать. Знаете ли вы, что используемый ключ роута может быть изменен путем добавления этого кода в модель newsitem?
public function getRouteKeyName() {
   return 'slug'; 
}
Учитывая то, что столбец slug содержит в себе запись my-slug, следующий URL будет работать: /newsItem/my-slug.

Отправка загружаемого ответа

Laravel позволяет с легкостью настроить отклик при загрузке. Вы даже можете установить имя пользователя для отображения в браузере.
Response::download($pathToFile, $nameOfDownload);

Использование значений по умолчанию в шаблонах Blade

Всякий раз, когда вы используете переменную в Blade, у вас есть желание установить этой переменной значение по умолчанию, на случай, если этой переменной не будет задано значение.
//inside a blade view
{{ $myVariable or "Данная переменная не установлена" }}

Доступ к переменной во всех шаблонах Blade

Вы можете сделать переменную доступной во всех шаблонах blade с помощью метода share.
view()->share('currentUser', auth()->user());
При желании вы можете поместить этот код в сервис-провайдер.

Использование команд на основе замыканий

Вместо того, что бы создавать команду Artisan с помощью отдельного класса, можно определить её с помощью замыкания внутри метода commands в файле App/Console/Kernel.php:
// App/Console/Kernel.php
protected function commands()
{
   $this->command(
      'command:run {myArgument} {--myOption}', 
       function ($myArgument, $myOption) {
          // do something useful here...
   });
}

Получение записей в случайном порядке

Конструктор запросов имеет метод в inRandomOrder() для сортировки извлеченных из модели записей в случайном порядке:
$randomUser = DB::table('users')
                ->inRandomOrder()
                ->first();

Получение одного значения из записи

Если вам нужно одно какое-либо значение из полученной строки, вы можете использовать метод value.
$newestNewsItemTitle = DB::table('news_items')
   ->orderBy('created_at', 'desc')
   ->value('title');

Добавление столбца UUID

В ваших миграциях вы можете использовать метод uuid, чтобы добавить столбец, который будет содержать UUID.
//inside a migration
$table->uuid('id');
В MySQL этот метод создаст столбец типа VARCHAR (36).

“Жадная загрузка” количества связанных записей

Если вам нужно получить количество некоторых связанных записей, вы можете использовать метод withCount:
$newsItems = NewsItem::withCount('comments')->get();

Таковы лишь некоторые из примеров, которые я взял из книги. Я очень рекомендую эту книгу тем, кто работает с этим фреймворком (Это мое личное мнение, за которое мне не заплатили :-)). Я не знаю, когда книга будет опубликована, но предполагаю, что это случится довольно скоро. Следите за этим на официальном сайте книги.

Ссылка на оригинальную статью