Ответ 1
Вы можете сделать это следующим образом:
Table::select('name','surname')->where('id', 1)->get();
позволяет сказать, что у меня есть 7 столбцов в таблице, и я хочу выбрать только два из них, что-то вроде этого
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
В красноречивой модели laravel это может выглядеть как
Table::where('id', 1)->get();
но я думаю, что это выражение выберет ВСЕ столбцы, где id равно 1, и я хочу только два столбца (имя, фамилия). как выбрать только два столбца?
Вы можете сделать это следующим образом:
Table::select('name','surname')->where('id', 1)->get();
Table::where('id', 1)->get(['name','surname']);
Используя метод all(), мы можем выбрать определенные столбцы из таблицы, как показано ниже.
ModelName::all('column1', 'column2', 'column3');
Примечание: Laravel 5.4
Вы также можете использовать find()
следующим образом:
ModelName::find($id, ['name', 'surname']);
Переменная $id
может быть массивом на случай, если вам нужно получить несколько экземпляров модели.
Также Model::all(['id'])->toArray()
он будет извлекать только id как массив.
Сначала вам нужно создать модель, представляющую эту таблицу, а затем использовать нижеприведенный способ получения данных только из двух полей.
Model::where('id', 1)
->pluck('name', 'surname')
->all();
Вы можете использовать get(), а также все()
ModelName::where('a', 1)->get(['column1','column2']);
Используйте следующий код: -
$result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();
Вы можете использовать Table::select ('name', 'surname')->where ('id', 1)->get ()
.
Имейте в виду, что при выборе только определенных полей вам придется сделать еще один запрос, если вы в конечном итоге получите доступ к этим другим полям позже в запросе (это может быть очевидно, просто нужно включить это оговорку). Включение поля id обычно является хорошей идеей, поэтому laravel знает, как писать любые обновления, которые вы делаете с экземпляром модели.
Также вы можете использовать pluck.
Model::where('id',1)->pluck('column1', 'column2');
Хотя наиболее распространенный подход заключается в использовании Model::select
, он может вызвать рендеринг всех атрибутов, определенных с помощью методов доступа в классах модели. Итак, если вы определите атрибут в вашей модели:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user first name.
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
А затем используйте: TableName::select('username')->where('id', 1)->get();
Это будет сборник выходной как с first_name
и username
, а не только имя пользователя.
Лучше использовать pluck()
, соло или опционально в сочетании с select
- если вы хотите конкретные столбцы.
TableName::select('username')->where('id', 1)->pluck('username');
или же
TableName::where('id', 1)->pluck('username');
// это вернет коллекцию, состоящую только из значений username
Также, опционально, используйте ->toArray()
для преобразования объекта коллекции в массив.
Вы можете использовать следующий запрос:
Table('table')->select('name','surname')->where('id',1)->get();
->get()
очень похож на ->all()
(и ->first()
т.д.) могут принимать поля, которые вы хотите вернуть в качестве параметров;
->get/all(['column1','column2'])
Вернул бы коллекцию, но только с column1
и column2
Вы также можете использовать findOrFail()
здесь хорошо использовать
если исключение не перехвачено, ответ 404 HTTP автоматически отправляется обратно пользователю. Нет необходимости писать явные проверки, чтобы возвращать 404 ответа, когда использование этого метода не дает ошибку 500.
ModelName::findOrFail($id, ['firstName', 'lastName']);
Если вы хотите получить одну строку и из одного столбца этой строки, один строчный код для получения значения конкретного столбца - это использовать метод find()
наряду с указанием столбца, для которого вы хотите его получить.
Вот пример кода:
ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];
Из laravel 5.3, только используя метод get()
вы можете получить определенные столбцы вашей таблицы:
YouModelName::get(['id', 'name']);
Или из laravel 5.4 вы также можете использовать метод all()
для получения полей по вашему выбору:
YourModelName::all('id', 'name');
с обоими вышеупомянутым методом get()
или all()
вы также можете использовать where()
но синтаксис различен для обоих:
Модель :: все()
YourModelName::all('id', 'name')->where('id',1);
Модель :: получить()
YourModelName::where('id',1)->get(['id', 'name']);
Получить значение одного столбца:
Table_Name::find($id)->column_name;
Даже вы можете использовать этот метод с предложением where:
Table_Name::where('id',$id)->first()->column_name;