Open6

コードレビューで実際に貰ったコメントまとめ

美味しいパン食べたい美味しいパン食べたい

【Eloquent】get()の第二引数

Post::where('category', $category)->get('title', []);

get()したときに対象のレコードが無かった場合、nullが返ってくるため、
null以外で取得したい場合は、第二引数に渡したい値を記入することができます。

美味しいパン食べたい美味しいパン食べたい

【その他】データを取得するメソッドの命名

getはクラスのプロパティを取得する時(いわゆるゲッター)に使うことがほとんどなので、
それ以外ではあまり使わない方がいいですね。
今回はAPIでデータを取得しているんで、fetchがいいかな?
※ DBから取得する場合はretrieveあたりが良かったりします。

美味しいパン食べたい美味しいパン食べたい

【Helpers】env()の記載場所

Laravelではconfigファイル内以外でenv()を使うのはアウトです。
config:cacheされるとenv()は全てnullを返すようになるので、本番環境で死んじゃうんですよね。
一度tinkerで試してみた方がいいかもしれないです。

  1. tinkerに入る
  2. env('APP_ENV')localが表示されるのを確認
  3. tinkerを抜ける
  4. php artisan config:cacheでキャッシュ生成
  5. tinkerに入る
  6. 2同様env('APP_ENV')を入力してみる

キャッシュ前はlocalだったのが今はnullになってると思います。
なので、.envの内容はconfigファイルにenv()で書いてあげて、使う場合は全部config()で呼び出す必要があります。
※ 実験が終わったらキャッシュクリアしておかないと面倒なんで忘れずに php artisan config:clear

美味しいパン食べたい美味しいパン食べたい

【Helpers】連想配列の値の取得

以下公式より引用。


このdata_get関数は、「ドット」表記を使用してネストされた配列またはオブジェクトから値を取得します。

$data = ['products' => ['desk' => ['price' => 100]]];
 
$price = data_get($data, 'products.desk.price');
 
// 100

このdata_get関数はデフォルト値も受け入れます。デフォルト値は、指定されたキーが見つからない場合に返されます。

$discount = data_get($data, 'products.desk.discount', 0);
 
// 0

この関数は、配列またはオブジェクトの任意のキーをターゲットとするアスタリスクを使用したワイルドカードも受け入れます。

$data = [
    'product-one' => ['name' => 'Desk 1', 'price' => 100],
    'product-two' => ['name' => 'Desk 2', 'price' => 150],
];
 
data_get($data, '*.name');
 
// ['Desk 1', 'Desk 2'];

{first}およびプレースホルダー{last}は、配列内の最初または最後の項目を取得するために使用できます。

$flight = [
    'segments' => [
        ['from' => 'LHR', 'departure' => '9:00', 'to' => 'IST', 'arrival' => '15:00'],
        ['from' => 'IST', 'departure' => '16:00', 'to' => 'PKX', 'arrival' => '20:00'],
    ],
];
 
data_get($flight, 'segments.{first}.arrival');
 
// 15:00

https://laravel.com/docs/12.x/helpers#method-data-get

美味しいパン食べたい美味しいパン食べたい

【Migration】

  • テーブル名でdataは使わないこと、dataだと意味が広すぎて伝わらないため。
  • migration生成時、一旦rollbackも試してエラーが発生していないか確認すること。