Как получить объект Builder из строк, связанных с Pivot — Laravel

Я пытаюсь получить все «книги», которые есть у одного пользователя, но я не могу сделать это так, как мне нужно.

Я использую следующий код:

/*Gets all books from the user whose id is 1*/
$books= User::find(1)->books();

Что верни мне Collection объект; но мне нужен Builder объект, как я получаю, когда я использую метод «выбора».

/* This code return me a "Builder" object */
Books::select(array('id', 'name', 'type'));

мне нужно Builder вместо Collection потому что я использую Bllim / Datatables в моем проекте, и этот пакет просто принимает Builder объект …

Если я отправлю это Collection Это выдает мне следующую ошибку (500 — Internal Server Error):

{
"error":
{
"type":"ErrorException",
"message":"Undefined property: Illuminate\\Database\\Eloquent\\Builder::$columns",
"file":"\/var\/www\/proyect\/myproyect\/vendor\/bllim\/datatables\/src\/Bllim\/Datatables\/Datatables.php",
"line":256
}
}

Кто-нибудь знает решение?

РЕДАКТИРОВАТЬ:

Когда я дважды использую метод getQuery (), я получаю следующую ошибку:

{"error":{"type":"ErrorException","message":"array_values() expects parameter 1 to be array, null given","file":"\/var\/www\/proyect\/myproyect\/vendor\/bllim\/datatables\/src\/Bllim\/Datatables\/Datatables.php","line":550}}

Редко, потому что когда я использовал метод «select», Datatables работал отлично …

Этот код работает:

Books::select(array('id', 'name', 'type'));

Но код, который вы мне сказали, не работает:

$user = User::find(1);
$user->books()->getQuery()->getQuery();

1

Решение

Используйте вызов метода books():

$user = User::find(1);

$user->books(); // relation object
$user->books; // dynamic property

Первый books() возвращает объект отношения, который вы можете связать Eloquenr\Builder или же Query Builder методы на.

второй books является динамическим свойством — запрос выполняется автоматически, а его результат сохраняется в $user->relations['books'] и вернулся.


редактировать

Согласно комментарию — что вам нужно, это база Query\Builder возражать, если вы хотите получить доступ columns собственность, так что вам нужно getQuery дважды:

$user->books()
->getQuery() // get underlying Eloquent\Builder
->getQuery() // get underlying Query\Builder
->columns    // public property on the above
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]