#cakephp #find #field
#cakephp #Найти #поле
Вопрос:
есть ли опция в методе поиска cake, где я могу сказать «дайте мне только поля, которые не являются нулевыми»? Я не хочу ставить это условие отдельно для каждого поля в массиве условий, лучше установить это в качестве опции в массиве полей, подобном этому.
$this->find('first',array(
'fields' => array("not" => null)
));
Или даже исключить подобные поля.
$this->find('first' array(
'fields' => array('not' => array('id','created','modified'))
));
Спасибо, Гвидо
Ответ №1:
Это должно быть условием (почему это проблема как условие?).
Но вы можете поместить это в beforeFind()
метод, поэтому вам не нужно добавлять условие к каждому запросу. Включение его в beforeFind()
приведет к тому, что условие будет добавляться к каждому запросу до того, как он фактически выполнит поиск. Звучит так, как я предполагаю, вы действительно хотите, поскольку «но не как условие» на самом деле не дает особых аргументов, почему этого не может быть.
Комментарии:
1. Привет, Дэйв, спасибо. я думаю, я нашел решение для фильтрации нулевых полей. Но не в параметре полей я нашел статический метод Set::filter. Итак, я могу фильтровать свои данные следующим образом: $this-> set(Set::filter($this-> SomeModel-> find(‘first’)));
2. У меня проблема с настройкой условия y, потому что поля должны быть установлены несколькими hasOne и имеют много объединений в заголовке класса. В таблицах много столбцов, и было бы проще (даже когда это возможно :)) сказать «вообще никаких нулевых полей» или перечислить поля типа «id, созданные и измененные», которые я не хочу читать.
3. Конечно, я могу использовать условия, но было бы неплохо установить этот параметр другим способом, даже если это возможно. Большое вам спасибо 😉
4. То, что вы указали в качестве опции, просто удаляет пустые элементы из массива после того, как вы уже выполнили
find()
. Если это то, что вы надеялись сделать, вам ДЕЙСТВИТЕЛЬНО следовало уточнить в своем вопросе.