あるカラムの最大値を別のカラムで絞り込まれたものから取得するというものが必要になり、ネットで調べていた時の事。

まず対象のカラムの最大値を取得する場合は以下のような感じ。

 

$user_id = User::max('id');

 

こんな感じでidカラムの最大値を取得することができます。

今回はある別のカラムで絞り込んだ情報から最大値を取得するというSQL命令が欲しくて以下の方法を指定してみた。絞り込みはwhere(“対象カラム” , 値) でイコールの形になるのだそう。

 

// 例:出身地で絞り込んだユーザーのナンバー最大値 $pref => 都道府県名
$user_num = User::max('num')->where('pref', $pref)->first();

 

しかし、結果はエラーが表示されました。

 

Call to a user function where() on int

int?数値がなにかっていう問題なのかな?

max値を調べるってことなので数字系なのは確かなのだけど…

それともwhere文の位置がおかしい?

別の形にしてみました。

 

$user->where('pref', $pref)->max('num');

 

うまくSQL実行されました、ナニコレw

whereが先に来て最大値を後で取得するっていう流れは、確かに指定したものから最大値を求めるというふうに形はあってるけど。

まあこれで取得できたんならいいか。