PostgreSQL、集約関数でカラムエイリアスにhavingは使えない?
PostgreSQL、集約関数でカラムエイリアスにhavingは使えないっぽい
例)商品テーブル(products)からcategory_idごとの商品の合計値段から、合計値段が1000を越えるcategory_idを抽出
- NG:
select category_id, sum(price) as amount from products group by category_id having amount > 1000
- OK:
select category_id, sum(price) from products group by category_id having sum(price) > 1000
Laravelでhttp経由でDB+Webサーバーのヘルスチェックサンプル
Laravelでhttp経由でDB+Webサーバーのヘルスチェックサンプルです
<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\DB; class HealthCheckResultsController extends Controller { public function __invoke() { $status = 500; try { DB::connection(config('database.default'))->getPdo(); $status = 200; } catch (\Exception $exception) { } return response() ->json([], $status); } }
Route::get('/health', 'HealthCheckResultsController');
Laravel 8+, PHP 8+であれば以下を使いたかった
Laravel 7+, PHP 7.4+でやろうとした残骸
tsmsogn/laravel-healthを利用する *1
composer.jsonに以下を追加
{ "repositories": { "spatie/laravel-health": { "type": "vcs", "url": "https://github.com/tsmsogn/laravel-health" } } }
composerでインストール
composer require spatie/laravel-health:dev-main
*1:いろいろな制限付き
laravelでCall to undefined method Illuminate\Routing\RouteFileRegistrar::get()
bad
Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function () {
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
});
good
Route::prefix('admin')->namespace('Admin')->name('admin.')->group(function () {
// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
});
Laravelで継承元モデルの$withを引き継ぎ、オーバーライドする
Model <- Bicycle <- ElectricBicycle
という継承関係で
Bicycleモデルで$withを使ってイーガーローディングしている
Bicycleモデルを継承したElectricBicycleモデルを作り、ElectricBicycle独自で実装したリレーションがあるとする
ElectricBicycleモデルでBicycleモデルの$with+独自実装したリレーションをイーガーローディングするためには以下のようにする
Bicycle
class Bicycle extends Model
{
$with = [
'handle'
];
public function handle()
{
return $this->hasOne(Handle::class);
}
}
ElectricBicycle
class ElectricBicycle extends Bicycle
{
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->with = array_merge(
$this->with,
[
'battery',
]
);
}
public function battery()
{
return $this->hasOne(Battery::class);
}
}