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

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

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

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

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

 /* 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(); 

Solutions Collecting From Web of "Как получить объект Builder из строк, связанных с точкой поворота – Laravel"

Использовать метод call 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