2016-09-26 2 views
0

一つに)andFilterWhereの配列(として以下のような文字列を渡します以下の文で:文字列はYii2

$query->andFilterWhere($condition); 
+1

文字列を配列に変更する独自のメソッドを記述する必要があります。私はちょうどあなたがどのように配列ではなく、そのような文字列で始まったのか興味がありますか? – Bizley

+1

@Bizley文字列がDBから来ており、関数などから来ていないことが指定されています。 –

+0

@Bizleyのコメントは正しいです。あなたが必要とする配列の文字列を変更するための適切な関数を書かなければなりません。文字列のパターンを見始めると、あなたがpoplulateに必要な部分を得るためにexplodeを使い始めます。配列 – scaisEdge

答えて

2

単にeval()(YIIに固有ではない)を使用します。

$condition = "['or',['LIKE','name','index'],['=','type',1]]"; 
eval("\$condition = $condition;"); 

eval()については、こちらをご覧ください。

+2

eval()を使うことは**非常に危険です**。 – Bizley

+1

私はすでにこのことを知っています。ちょうど質問に答えるだけです。 – soju

+0

はい、その作業はありがたくありますが、evalメソッドで$条件の前に '\'を使用するのはなぜですか? これを詳しく説明します。 –