1

私はちょうど Laravel 4 を学んでいて、Eloquent モデルがどのように機能するか確信が持てませんでした。それらがデータベースと対話するための良い方法であることは明らかですが、Eloquent を拡張したクラスでコンストラクターと関数を定義して、それをデータベースとの対話以外の目的で使用することはできますか?

4

1 に答える 1

1

はい!Eloquent を拡張するクラスは、Eloquent の目的のみに使用されるクラスにはなりません。クラス拡張の概念を理解しました。クラス拡張は、別の既存のクラスから任意のクラスに機能を追加するだけです。この場合、Eloquent.

すでにお持ちのモデルはどれでも構いませんが、明日はそれを Eloquent で使用することを決定し、単に拡張するだけです。元のクラスは元のクラスのままであり、同じように機能します。親に同じ名前のものがあれば、元のクラスのメソッドまたはプロパティは親 (Eloquent) を上書きします。

実際、Eloquent を拡張するクラスで他のメソッドを作成することは、あらゆる種類の優れた機能を実行する堅牢なモデルを作成する本当の方法です。たとえば、 User モデルにメソッドを作成して、誕生日までの日数を計算します。誕生日の列をコントローラーに取り込み、PHP を使用して計算する代わりに、User::daysUntilBirthday(); のようなメソッドを使用するだけです。

コンストラクターを使用して Eloquent を拡張する場合は、Eloquent のコンストラクターも起動するようにしてください。

class MyModel extends Eloquent {

   public function __construct($attributes = array(), $exists = false)
   {
      parent::__construct($attributes, $exists); // This will fire off Eloquent's constructor.
      // Your construct code.
   }
}
于 2013-06-01T02:32:27.100 に答える