Собрал несколько трюков для Laravel. На данный момент последняя вышедшая версия — 8.81.0
Для часто используемых форматов даты и времени можно создавать вот такие макросы.
use Illuminate\Support\Carbon;
Carbon::macro(
'toFormattedDateTimeString',
fn() => $this->format('M j, Y, H:i'),
);
now()->toFormattedDateTimeString(); // Jan 25, 2021, 14:00
Методы find()
и findOrFail()
также позволяют выбрать необходимые поля, не используя метод select()
.
$user = USER::find(1, ['name', 'email']);
$user = USER::findOrFail(1, ['name', 'email']);
Теперь можно группировать маршруты ещё и по общему контроллеру. А при определении маршрута нужно указать только метод контроллера, который группа вызывает.
use App\Http\Controllers\OrderController;
Route::controller(OrderController::class)->group(function () {
Route::get('/orders/{id}', 'show');
Route::post('/orders', 'store');
});
Обратный вызов должен быть функцией сравнения, которая возвращает целое число меньшее, равное или большее нуля. Этот метод использует встроенную функцию uksort()
.
$collection = collect([
'ID' => 22345,
'first' => 'John',
'last' => 'Doe',
]);
$sorted = $collection->sortKeysUsing('strnatcasecmp');
$sorted->all();
/*
[
'first' => 'John',
'ID' => 22345,
'last' => 'Doe',
]
*/
Blade::render('Hello, {{ $name }}', ['name' => 'Claire']);
// Returns 'Hello, Claire'
Blade::render('@if($foo) Foo @else Bar @endif', ['foo' => true]);
// Returns 'Foo '