私はlaravel 5.4を使用しています。モデルのソフト削除テーブルの列を上書きする
私は、次の属性を持つデータベーステーブルを指すモデルを持っています。
id integer
name varchar
location varchar
deleted boolean
これは古いテーブルであり、コードの束に束縛されているため、このテーブルを変更することはできません。
私がしたいことは、モデル内のlaravelsソフト削除機能を利用することです。私はlaravelが列名がdeleted_at
で、データ型がdate
であるとデータベーステーブルに期待していることが分かります。
Laravelが列deleted
を見て、それがboolean
であることを確認するために、これを上書きするにはどうすればよいですか?
私のモデルが継承しているクラスを見てみましたが、これを処理する定数と関数がどこに定義されているのか見当たりませんでした。私はそれがコレクションにあるかもしれないと思うが運がなかった。
理想的には、モデル内の関数を単に再定義したいと考えています。
ありがとうございました。
'Illuminate \ Database \ Eloquent \ SoftDeletingScope'クラスは、ゴミ箱でないカラムに基づいてクエリを実行します。ブール値 'false'は、ヌルではないので、ゴミ箱とみなされます。それにも対応する必要があります。 –
@JohnEllmoreそれは本当にありがとう、ありがとう。私はそれを行う最も簡単な方法は 'deleted'をnullにすることです。この場合、OPは 'boolean'を働かせるために3つ以上のメソッドをオーバーライドする必要はありません。あなたが 'nullable'にすることができず、非常に多くのメソッドをオーバーライドしたくない場合は、@ hdifen独自の特性を作成することを検討してください。私はあなたがLaravelが提供するソフト削除関連の機能をすべて必要としないと確信していますので、その特性は簡単に簡単にできます。 –
ねえ、そういうわけで、私が思うのは、削除された列しかないモデルが必要なときです。これは、クエリに 'WHERE NULL'ステートメントを追加します。私はそれを使ってモデルを削除できるようにいくつかの関数を上書きすることができますが、アイテムを取得するときには、削除されたアイテムを返すという問題が発生します。 @ JohnEllmore私はあなたのソリューションを行うための出発点は何ですか?モデルを作成する方法がわからないのは、「削除済み= 0」の項目を取得することです。 – hdifen