RAWクエリに基づいて、デフォルトでROWを追加する
質問
私の雄弁なコレクションでは、「編集可能」という余分な列を追加したいのですが。「編集可能」には、いくつかのモデルで実行している各クエリに含める必要があります。「編集可能」には、RAWクエリに基づいて、trueまたはfalseのいずれかを表示します。
だから私は私のモデルで各クエリで実行されるべきクエリを持っています。私のコレクションに余分な列を追加します。「編集可能」の値は、RAWクエリによって決まります。
これを行う最善の方法は何ですか?
解決
カスタム属性を含めるために、照会チェーンにaddSelect()
メソッドを追加することができます..
のようなもの
$results = YourModelClass::select("*")
->addSelect(DB::raw("IF(condition,1,0) AS editable"))
->get();
.
上記の場合、照会の一部として、列ごとに評価されるようなcondition
に置き換えます。ステートメントが真の場合は、editable = 1
とFalseの場合、各行のeditable = 0
をコレクションに返しました。
編集:あなたが ever> queryにこれを必要としていることを見ましたので、あなたのモデルのためのグローバルスコープ/特性が必要になるでしょうが、追加の属性を含めるための上記のテクニックは正しいものであるべきです。
グローバルスコープの追加に関するドキュメントをコピー/貼り付けることはできません。それはコアララベルドキュメントにあります、そして私はそれを見つけることができると確信しています。
他のヒント
あなたのモデルにカスタムゲーターを追加することができます:
public function getEditableAttribute()
{
/* return result from your raw query here */;
}
. 所属していません StackOverflow