Что-то не так ли? B/w есть cakephp 3. Почему мы используем или находим в cakephp 3.Какая разница между get или find in cakephp 3
ответ
Получить обычно используется для получения одного объекта по первичному ключу.
$this->Models->get($id);//here $id is your tables primary key
В найти мы оштрафовать данные.
$this->Models->find('all');//get all the data
$this->Models->find('all')->first(); //get the first row
Он может быть использован, чтобы найти как все данные, а также первые данные. Здесь мы также можем поставить условия
Перейдите по этой ссылке для получения дополнительной информации
http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html
При использовании find()
метода, то вы можете передать состояние, как вы хотите, для извлечения данных после фильтрации от источника дб. find('first')
или find('all')->first()
ведет себя одинаково.
НО
get($id)
будет применяться условие только поля первичного ключа таблицы. Это означает предоставление результата для одной записи только из-за состояния первичного ключа.
При использовании метода get()
, если запись не найдена из источника db, тогда CakePHP выбрасывает NOT Found Exception. Так что это очень полезно, если вы даете ответ как НЕ НАЙДЕН - 404 Например, страница профиля, страница с подробностями блога..etc
Вы можете вызвать find()
на экземпляр таблицы, который создает объект Query и возвращает его, и вы можете продолжить цепочку других методов, таких как where()
, ->select()
и объекты запрос ленивы, и не будут выполняться, если вы звоните all()
, toArray()
, first()
, firstOrFail()
и т.д., больше объяснений здесь https://book.cakephp.org/3.0/en/orm/query-builder.html
в то время как get($primaryKey, $options = [])
вернет запись, если найдены или бросков не найдено исключение, если нет записи, он внутренне строит запрос и вызовы firstOrFail()
также стоит отметить, что get выбрасывает исключение, если операция не находит никакого результата – arilia
@arilia да, мы должны поймать это исключение – sradha