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

Конструктор запросов БД toArray() laravel 4

Я пытаюсь преобразовать запрос в массив с помощью метода toArray(), но он не работает для построителя запросов. Любые идеи для его преобразования?

Пример

DB::table('user')->where('name',=,'Jhon')->get()->toArray();
4b9b3361

Ответ 1

toArray - это модельный метод Eloquent, поэтому вам нужна модель Eloquent, попробуйте следующее:

 User::where('name', '=', 'Jhon')->get()->toArray();

http://laravel.com/docs/eloquent#collections

Ответ 2

Если вы предпочитаете использовать Query Builder вместо Eloquent, то это решения

$result = DB::table('user')->where('name',=,'Jhon')->get();

Первое решение

$array = (array) $result;

Второе решение

$array = get_object_vars($result);

Третье решение

$array = json_decode(json_encode($result), true);

надеюсь, что это поможет

Ответ 3

Обратите внимание: опция, представленная ниже, по-видимому, больше не поддерживается в отношении Laravel 5.4 (спасибо @Alex).

В Laravel 5.3 и ниже существует метод установить режим выборки для выбора запросов.

В этом случае это может быть более эффективным:

DB::connection()->setFetchMode(PDO::FETCH_ASSOC);
$result = DB::table('user')->where('name',=,'Jhon')->get();

Таким образом, вы не будете тратить время на создание объектов и преобразование их обратно в массивы.

Ответ 4

И еще одно решение

$objectData = DB::table('user')
    ->select('column1', 'column2')
    ->where('name', '=', 'Jhon')
    ->get();
$arrayData = array_map(function($item) {
    return (array)$item; 
}, $objectData);

Хорошо, если вам нужно всего несколько столбцов от объекта.

Ответ 5

Вы можете сделать это, используя построитель запросов. Просто используйте SELECT вместо TABLE и GET.

DB::select('select * from user where name = ?',['Jhon']);

Примечания:  1. Разрешены несколько вопросительных знаков.  2. Второй параметр должен быть массивом, даже если есть только один параметр.  3. Laravel автоматически очищает параметры, поэтому вам не нужно.

Дополнительная информация здесь: http://laravel.com/docs/5.0/database#running-queries

Hmmmmmm, оказывается, что все еще возвращает стандартный класс для меня, когда я не использую предложение where. Я нашел, что это помогло:

foreach($results as $result)
{
print_r(get_object_vars($result));
}

Однако get_object_vars не является рекурсивным, поэтому не используйте его для $results.

Ответ 6

попробуйте этот

DB::table('user')->where('name','Jhon')->get();

просто удалите знак "="., потому что вы пытаетесь собрать только имя "jhon".,,, Я надеюсь, что это поможет вам..