Vehicle
車種が異なる(モデル番号はvehicles
)モデルを持っているとしましょう。もちろん、そこに車の多くの異なる種類がありますので、私は、たとえばありますEloquentモデルに基づいて子孫クラスを作成する
class Car extends Vehicle {
}
class Bicycle extends Vehicle {
}
のように。
車に基づいたオブジェクトを見つける必要があります。ここに問題があります。
public function getClass()
{
return __NAMESPACE__ . '\\' . ucfirst($this->type)
}
ので、私は、私が使用する必要があるクラス名を見つけることができます:私はVehicle
モデルで次のメソッドを追加しました。
は、しかし、有効なクラスを取得する唯一の方法は、このようなものです:
私は、有効な最後のクラスオブジェクトを取得するには2つのまったく同じクエリを実行する必要があるため、最善の解決策ではありません$vehicle = Vehicle::findOrFail($vehicleId);
$vehicle = ($vehicle->getClass())::find($vehicleId);
。
クエリを複製せずに同じことを達成する方法はありますか?正しくタイプ列によって決定クラスのオブジェクトを返すように雄弁ためには
彼らはすべて異なるテーブルから来ているのですか、それともただ1台の車両テーブルですか? –
これはデータベースの1つのテーブル –