Название в значительной степени говорит само за себя. У меня есть несколько таблиц с полями, которые содержат много данных. Чтобы сохранить некоторую производительность, я бы не хотел ВЫБИРАТЬ их по умолчанию.
Акцент на новом поведении по умолчанию, отличающем вопрос, например, от. Выбрать все поля, кроме одного, в запросе cakephp 3
Пример:
$cities = $this->Cities->find();
// A $city does not include the field `shape` (which is a huge polygon)
$cities = $this->Cities->find(['id', 'name', 'shape']);
// A $city now does include the `shape` property
Я просмотрел свойства accessible
и hidden
сущности, но они, похоже, не влияют на оператор SELECT.
РЕДАКТИРОВАТЬ: запрос selectAllExcept
кажется полезным. Я объединил это с событием beforeFilter
следующим образом:
public function beforeFind($event, $query, $options, $primary)
{
$query->selectAllExcept($this, ['shape']);
}
Это хорошо работает для пустых запросов, shape
теперь исключено. Но теперь у меня нет контроля над другими полями, которые, возможно, захочется включить или нет:$this->Cities->find()->select(['id', 'shape'])
затем также выберет другие поля, потому что selectAllExcept()
.