Подтвердить что ты не робот

Laravel - Когда использовать → get()

Я смущен, когда ->get() в Laravel...

например. DB::table('users')->find(1) не требуется → get() для извлечения результатов, и User::find(1)

В документах laravel говорится: "... выполнить запрос, используя метод get или first..."

Я читал Fluent Query Builder и Eloquent docs, но не понимаю, когда требуется использование get()...

Спасибо за помощь enter image description here

4b9b3361

Ответ 1

Поскольку функция find() всегда будет использовать первичный ключ для таблицы, необходимость в get() не нужна. Потому что вы не можете сузить свой выбор и почему он всегда будет просто пытаться получить эту запись и вернуть ее.

Но когда вы используете Fluent Query Builder, вы можете вложить условия как таковые:

$userQuery = DB::table('users');
$userQuery->where('email', '=', '[email protected]');
$userQuery->or_where('email', '=', '[email protected]');

Это позволяет добавлять условия во всем коде, пока вы не захотите их извлечь, а затем вы вызовете функцию get().

// Done with building the query
$users = $userQuery->get();

Ответ 2

  • Для find(n) вы извлекаете строку на основе первичного ключа, который равен "n".
  • Для first() вы извлекаете первую строку среди всех строк, которые соответствуют предложениям where.
  • Для get() вы извлекаете все строки, которые соответствуют предложениям where. (Обратите внимание, что для доступа к всем строкам требуются петли, или вы получите некоторые ошибки).

Ответ 3

find возвращает одну строку из базы данных и представляет ее как свободный/красноречивый объект. например SELECT * FROM users WHERE id = 3 эквивалентно DB::table('users')->find(3);

get возвращает массив объектов. например SELECT * FROM users WHERE created_at > '2014-10-12' эквивалентен DB::table('users')->where('created_at', '>', '2014-10-12')->get() будет возвращать массив объектов, содержащих пользователей, где созданное в поле новее, чем 4014-10-12.

Ответ 4

Метод get() даст вам все значения из базы данных, которые соответствуют вашим параметрам, где first() получает только первый результат. Вы используете find() и findOrFail(), когда ищете ключ. Вот как я их использую:

Когда мне нужны все данные из таблицы, я использую метод all()   Модель:: все();

Когда я хочу найти по первичному ключу:   Модель:: найти (1) → первый(); Или   Модель:: findOrFail (1) → первый(); Это будет работать, если есть строка с первичным ключом из одного. Он должен извлекать только одну строку, поэтому я использую first() вместо get(). Помните, что если вы удалили строку, которая использовала ключ 1, или у вас нет данных в вашей таблице, ваша находка (1) потерпит неудачу.

Когда я ищу конкретные данные, как в предложении where:   Model:: where ('field', '=', 'value') → get();

Когда я хочу только первое значение данных в предложении where.   Model:: where ('field', '=', 'value') → first();