find を使用して抽出した結果は、どのような過程を経てインスタンスになるのですか?

どういった仕様になっているか順を追って説明していきます。
2022年3月24日
ユーザー

いつもお世話になっております。

お手本コードでは、tinker にて、モデルの Post において
クラスメソッド find を使用して抽出した結果を
$post4 の変数に代入しています。

$post4 = App\Models\Post::find(4);
$post4-> title = 'Title updated';

そうすると $post4 にはインスタンスが代入されたことになるので、
このインスタンスプロパティにアクセス可能となり、

$post4-> title = 'Title updated';

として値を書き換えているという理解です。

ここで、クラスメソッド find を使用して抽出した結果が
どういった過程を経てインスタンスとなっているのか理解することができませんでした。

私の頭の中では #06 Tinkerでデータを操作してみよう で見たように、
まずはモデルの Post クラスを new することでインスタンスを作成し、
その 4 番目の要素の title というインスタンスプロパティを更新するといったイメージがあるので
すごく不思議に思ってしまうわけです...。

うまく実行こそできませんでしたが、
下記のように処理するような意識が働いてしまいます。

$post = new App\Models\Post();
$post[3]->title = 'Title updated';

従って new を使わず、クラスメソッド find を使用して抽出した結果が
どういった過程を経てインスタンスとなっているのか教えて頂きたいです。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(3)