問題タブ [soft-delete]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
laravel - Laravel 4でソフト削除されたEloquentモデルをクエリおよびフィルタリングする方法
https://github.com/snipe/laravel4-starterのLaravel 4.1 スターター キットを使用して、カテゴリと興味の 2 つのモデルがあります。どちらもソフト削除可能です。ユーザーの希望に応じて、インデックスビューに「すべて表示」、「削除済みを表示」、「削除されていないものを表示」の3つの異なるリストを表示したいと思います。それらの間に HasMany/BelongsTo 関係を追加するまで、すべて問題ありませんでした。
モデル:
$interest->category->name
ソフト削除されたカテゴリに属する Interest をビューが呼び出すと、すべてが で爆発しErrorException: Trying to get property of non-object
ます。$interest->category
これは、論理的に削除されてからロードされなかったため、 が NULL であることが原因であると思われます。
コントローラ:
switch ステートメントの 3 つのセクションごとに私の質問を参照してください。解決策にはある種の熱心な読み込みが含まれると思いますが、かなり激しいグーグル検索と実験の後でも、正しい呪文はまだ私を逃れています....
追加ポイント:ソフト削除されたカテゴリを持つ興味を除外しながら、ソフト削除されていないすべての興味をどのようにロードしますか?
ありがとうございました。
php - Laravel Soft Delete 一意の列名
カテゴリ テーブルがあり、論理的な削除を使用したとします。初めてカテゴリ「テスト」を追加した後、このカテゴリを削除したためdeleted_at
、データベースから列が更新されます。
ここで、「Test」という名前のカテゴリを再度追加しようとすると、この名前が使用されていると表示されます。ここに掲載されているルールを試してみました。
しかし、それは機能していません。モデルで特性を使用しました。以下は私のモデルコードです。
laravel-4 - Doctrine 2 (Mitchell van Wijngaarden): ソフト削除がまだ検索結果に表示される
Mitchell van Wijngaarden の Doctrine ソリューション ( https://github.com/mitchellvanw/laravel-doctrine/wiki/Soft-Deleting ) を Laravel 4 で使用しています。
論理的な削除を設定しましたが、論理的に削除されたエンティティが検索結果に表示されます。たとえば、次のクエリです。
このクエリは、「deleted_at」フィールドにタイムスタンプが入力されている場合でも、GroupInstruction クラスのすべてのエンティティを返します。論理的に削除されたすべてのアイテムが非表示になるという印象を受けました。誰もこれを経験したことがありますか?
doctrine-orm - 多対多で Doctrine2 Soft Deletable
多対多の接続がUser -> Address
あり、ソフト削除可能なプラグインを使用しています。
アドレスがリンクされていないすべてのユーザーを検索するクエリを作成する必要があります。論理的な削除を使用しないと、次のように問題なく動作します。
ここで、softdeletable が有効になってAddress
いて、ユーザーのすべてのアドレスを削除した場合でも、結果にこのユーザーが返されます。これは、上記のクエリが次の SQL (簡略化) に変換されるために発生しています。
ご覧のとおり、Address
エンティティに参加していないため、deletedAt
列に関する手がかりがありません。
だから私の質問は、DQLクエリを書き直してdeletedAtを認識させ、そのようなレコードを除外する方法です。
ありがとう!
ruby-on-rails - 「デフォルト」エンティティの削除を防ぐにはどうすればよいですか?
私は現在、Rails 4.2 の最新のベータ版を使用して、プロトタイプ アプリを構築しています。
システムのいくつかの部分では、ユーザーがリスト内の「デフォルト」項目を選択できるようにする必要があります。
これまでのところ、これをモデルの「デフォルト」フィールドとして実装し、「デフォルト」が 1 つしか許可されていないことを確認するための一意性検証を実装しました。
私のビジネス ルールの 1 つは、「既定の」エンティティを削除しないようにすることです。
before_destroy コールバックを使用してこれを行うこともできますが、これは正常に機能しますが、https://github.com/radar/paranoiaの paranoia gem を使用してソフト削除機能を提供しています。これは、モデルの破棄を update 呼び出しでオーバーライドします (代わりに「deleted_at」フィールドを設定します)。deleted_at フィールドが十分に早く設定されていないため、 before_update 呼び出しを使用しても期待される結果が得られません。
パラノイアの宝石が問題を引き起こす場合は、喜んでその要件を完全に削除します。ソフト削除は、この段階では不可欠な機能ではなく、あると便利です。
このロジックを実装する方法について誰か提案があり、それが期待どおりに機能することをテストすることも重要ですか?
laravel-4 - Laravel 4.2ソフト削除が正しく機能しない
クリーンなlaravel 4.2インストール(5日前から)でプロジェクトに取り組み始めたところです。次のように定義されたモデルがあります。
テーブルは で作成され$table->softDeletes();
、null 許容の deleted_at 列があります。
Code::find(1)->delete();
ここで、deleted_at 列を含むレコードを削除すると、現在の日付が入力されます。
しかし、その後Code::all()
、 またはを実行するCode::find(1)
と、結果には論理的に削除されたレコードが含まれますが、特に削除された結果が必要でない限り、それらは含まれないと思っていました...
私はすでにhttp://laravel.com/docs/4.2/upgrade#upgrade-4.2を読んでおり、私のモデルはそこに書かれている内容を反映しています。
何か足りないのでしょうか、それとも 4.2 のバグですか?