1

laravel、ページ、およびコンテンツに一対のオブジェクトがあります。

page_id に基づいたコンテンツを含むリレーションシップ関数と include をセットアップしました。

どこで削除された - 0 などの他の条件を適用したい、日付が特定の範囲内にある場合、どこで条件を適用してこれらのフィールドを設定する方法を知っています。

私が理解できないのは、追加の条件を適用する方法と、関係フィールドを一致させる方法です。

誰でもこれで私を助けることができますか?

4

2 に答える 2

3

モデルでリレーションシップを定義するだけで、モデル自体に対して行う必要があります。ただし、静的関数をモデルに追加して、必要な情報を含むデータを取得できます。

ページ モデル メソッドの例:

class Page extends Eloquent {

    public function contents()    
    {
        return $this->has_many('Content');
    }

    // Return all content that has not been marked as
    // deleted in the database
    public static function with_contents($id)
    {
        return Page::find($id)->contents()
                              ->where_null('deleted')
                              ->get();
    }
}

この例では、コンテンツ テーブルの削除されたフィールドは、削除されない限り null であると想定しています。削除された場合、値はありません。

使用するには、単に使用します

$page = Page::with_contents('1');

これらの静的ヘルパー メソッドを好きなだけ作成するか、1 つのメソッドに好きなだけ条件を追加してから、新しい静的メソッドを使用してデータを取得できます。

于 2013-01-06T18:35:58.933 に答える
0

これはあなたが探しているものかもしれないと思います

http://doginthehat.com.au/2012/06/adding-conditions-to-relationships-in-laravel/

class User extends Eloquent {

    public function meta()
     {
          return $this->has_many('Meta','target_id')
                      ->where('target_type','=',$this->table());
     }

}
于 2013-04-24T14:09:00.940 に答える