laravel、ページ、およびコンテンツに一対のオブジェクトがあります。
page_id に基づいたコンテンツを含むリレーションシップ関数と include をセットアップしました。
どこで削除された - 0 などの他の条件を適用したい、日付が特定の範囲内にある場合、どこで条件を適用してこれらのフィールドを設定する方法を知っています。
私が理解できないのは、追加の条件を適用する方法と、関係フィールドを一致させる方法です。
誰でもこれで私を助けることができますか?
モデルでリレーションシップを定義するだけで、モデル自体に対して行う必要があります。ただし、静的関数をモデルに追加して、必要な情報を含むデータを取得できます。
ページ モデル メソッドの例:
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 つのメソッドに好きなだけ条件を追加してから、新しい静的メソッドを使用してデータを取得できます。
これはあなたが探しているものかもしれないと思います
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());
}
}