이 문제가 있습니다. 데이터베이스에서 데이터를 가져 와서 필터링해야합니다. 하지만 그런 다음 사용자 지정 PHP 함수를 사용하여 필터링 된 결과를 그 데이터를 사용하여 필터링해야합니다. 사용자 정의 PHP 함수를 사용하여 ActiveDataProvider에서 필터링하는 방법
public function search($params) {
$query = Passenger::find();
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// I guess my function would go like here
Passenger::filterResultsEvenMore($dataProvider);
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'passenger_id' => $this->passenger_id,
// ...
'version' => $this->version,
'status' => $this->status,
]);
return $dataProvider;
}
ActiveDataProvider
에서CLASIC 검색 기능은 그래서 제 질문은 내가 변수를 vardump 경우는 다음과 같습니다없고, 거기에 실제 데이터 때문에 dataProvider의 결과로 작업하는 방법입니다.
yii\data\ActiveDataProvider Object
(
[query] => common\models\PassengerQuery Object
(
[sql] =>
[on] =>
[joinWith] =>
[select] =>
[selectOption] =>
[distinct] =>
[from] =>
[groupBy] =>
[join] =>
[having] =>
[union] =>
[params] => Array()
[_events:yii\base\Component:private] => Array()
[_behaviors:yii\base\Component:private] => Array()
[where] => Array
(
[status] => 1
)
[limit] =>
[offset] =>
[orderBy] =>
[indexBy] =>
[emulateExecution] =>
[modelClass] => common\models\Passenger
[with] =>
[asArray] =>
[multiple] =>
[primaryModel] =>
[link] =>
[via] =>
[inverseOf] =>
)
[key] =>
[db] =>
[id] =>
[_sort:yii\data\BaseDataProvider:private] =>
[_pagination:yii\data\BaseDataProvider:private] =>
[_keys:yii\data\BaseDataProvider:private] =>
[_models:yii\data\BaseDataProvider:private] =>
[_totalCount:yii\data\BaseDataProvider:private] =>
[_events:yii\base\Component:private] => Array()
[_behaviors:yii\base\Component:private] =>
)
UPDATE 나는 각 레코드에 대해 다음과 같은 기능을 사용할 필요가
:
if (myFunction(table_column_1, table_column_2)) {
result_is_ok_return_it
} else {
do_not_return_this_record
}
사용'$ dataProvider-> models' 결과를 얻으려면. –
그게 쉽니? 내가 믿을 수 없어, 나는 약한 순간을 가졌다 고 생각한다. 고마워, 답장으로 써 주면 답을 줄 것이다. – Ripper