2016-08-16 5 views
1

私は、クエリを動的にwhere句に渡したい:Where節 - varとして渡しますか?

User::where('published', '=', '1')->get(); 

私がしようとすると、配列に渡すと、エラー:

$where = ['published', '=', '1']; 
User::where($where)->get(); 

がどのように私はAに保存されているのparamsに渡すことができますvar?

答えて

1

これはできません。

$where = ['published', '1']; 
User::where($where[0], $where[1])->get(); 

しかし、もっと良い方法がscopes使用することです:何らかの理由であなたが似ていますが、作業の何かが必要な場合は、代わりにこれを試して

User::published()->get(); 

をそしてUserモデルで:

public function scopePublished($query) 
{ 
    return $query->where('published', 1); 
} 
+0

スコープは、より良い方法ではないでしょう – panthro

0

これを試すことができますか?

$attributes = [ 
        [ 
         'column' => 'published', 
         'condition' => '=', 
         'value' => '1' 
        ], 
        [ 
         'column' => 'first_name', 
         'condition' => '=', 
         'value' => 'John' 
        ], 
      ]; 


$getUser = User::where(function($query) use($attributes){ 
        foreach($attributes as $key => $value){ 
        $query->where($value['column'],$value['condition'],$value['value']); 
          } 
         })->get(); 
+0

wouldntの仕事。条件を指定したくない場合もあるので – panthro

0

(部分的に)生のクエリを実行し、SQL文を文字列として渡すことができます。

$where = "'published' = '1'"; 
User::whereRaw($where)->get(); 

またはこのような:このような何か私がスコープに句で渡すことができ、すべての可能性を秘めていると同じように

$where = "'published' = :published"; 
$published = 1; 
User::whereRaw($where, compact('published'))->get();