0

私はgeneric_modelを拡張するモデルを使用し、それがEloquentを拡張します(そのため、使用するいくつかのcrudメソッドが既に継承されるように設定されています)。

私が使用するテーブルの多くは、ソフト削除を呼び出します。これには、次のWHERE句が必要です...

WHERE deleted = 0

このWHERE句がすべてのクエリと相互に関連するオブジェクトへのすべてのクエリに自動的に含まれるようにLaravelを動作させる方法はありますか?

例えば

pages where id = 5 and deleted = 0

その後...

images where page_id = 5 and deleted = 0
4

2 に答える 2

7

laravel 3を使用している場合、これが必要です

あなたのモデルで

public function query()
{

    $query = parent::query();

    $query->where('deleted','=','0');

    return $query;
}

laravel 4を使用している場合は、newQueryのメソッドクエリを変更するだけです

public function newQuery()
{

    $query = parent::newQuery();

    $query->where('deleted','=','0');

    return $query;
}

参照

于 2013-06-16T18:58:41.037 に答える
1

リレーションシップでは、戻り値に where_clause を追加できます。

 public function pages()
{
    return $this->has_many('Page')->where_deleted(0);
}

モデルに、次のようなものを追加できます。

public static function active()
{
    return self::where_delete(0)->get();
}

(または、モデルの関数から を削除して、クエリをさらに変更することができますPage::active()( )Page::all()->get()Page::active()->order_by('name')

于 2013-01-11T09:52:25.693 に答える