現在、私のLaravelモデルでコードをクリーンアップしようとしていますが、現時点では、各モデルのローカルスコープで多くのコードを複製しています。それぞれのモデルには類似した列がたくさんあり、これらのスコープをどのように1つの場所に置くことができるかを考えていますが、$table
変数を渡して動的に使用できるようにしています。私は現在、ラーベールの親モデルにスコープを追加する
public function scopeName($query, $name)
{
return $query->where($this->table.'name', $name);
}
public function scopeStatus($query, $status)
{
return $query->where($this->table.'.status', $status);
}
例えばいくつかのモデルでは、私はこれらの共通のスコープを取ると、私はそれにテーブルを渡すことができますし、私は、コードを排除することができ、単一のクラスでそれらを持っていると思いますしている何
複製。親モデルを拡張するのと同様のものを見つけることができませんでした。私はグローバルスコープについても認識していますが、同様の問題が発生します。ここでは、それぞれのモデルにstatic::addGlobalScope(new StatusScope)
と入力しています。
ご協力いただきまして誠にありがとうございます。
ここでは特性を悪いと見なしますか?
はい!ローカルスコープを使用するかグローバルスコープを作成する場合でも、それを適用するための特性は正しい方法です。ソフト削除機能を使用して、ソフト削除をモデルに適用する方法を見てみましょう。あなたは、コードの重複を排除するために必要です。がんばろう! – larsemil