質問: Test::get(); var_dump($r); $r2= DB::table('test')->get(); var_dump($r2); ``` update()とsave()ではupdated_atが更新される/されないなどという違いがわかりましたがメリットデメリットというほどの話ではない気がします。 DB::rawはあまり使わないほうが良いというのはなんとなくわかるのですが。。。 DBの違いやバージョンの違いは例えばupdate()とsave()のどちらも吸収してくれるのですよね? Eloquentを使わないといけない理由を教えてください。
回答: > > どこかの記事で読んだ感じでは取得したデータ構造がstdClassと連想配列で返ってくると思っていたのですがどちらも連想配列で返ってきました。 > > > 少なくとも自分の知る Laravel 5.5 では、前者はモデルクラスのインスタンス、後者は`stdClass`のインスタンスで返ってきます。連想配列で返ってくることはありません。 パッと見で思い込んでいるだけで、`var_dump`の結果が実は連想配列じゃなかったりすることはありませんか?できれば結果までコピペで提示していただけると確実です。 > > Eloquentを使わないといけない理由を教えてください。 > > > 【メリット】 * リレーションを定義できる * イベントハンドラを定義できる * JSONレスポンスの生成、およびそのための加工が宣言的にできる * ルートモデルバインディングを利用できる * 再利用性が高い 【デメリット】 * (Many to Many 系以外の) リレーションでJOINを使ってくれないので最速のパフォーマンスは出ない * クエリビルダに比べると学習コストが高い