2016-01-04 2 views
2

Я пытаюсь выполнить следующий запрос с соединениемреализации соединяется с Laravel 5

SELECT * from users as u 

LEFT JOIN `table1` as ou 

ON ou.user_id = u.id 

LEFT JOIN table2 as o 

ON o.id = ou.orid 

LEFT JOIN table3 as p 

ON o.pra_id = p.id; 

с моей Laravel моделью, поэтому я создать функцию с именем ALLDATA() в моей модели пользователя с помощью следующего кода

public function alldata() 

{ 

    return $this 

     ->leftjoin('table1','users.id','=','table1.user_id') 

     ->leftjoin('table2','table1.orid','=','table2.id') 

     ->leftjoin('table3','table2.pra_id','=','table3.id'); 

} 

сейчас, когда я пытаюсь получить доступ к данным по $ gd = User :: find (1) -> getall(), он возвращает результаты со всей таблицей , но когда я пытаюсь подключиться к $ gd = User :: all() - > alldata() он дает ошибку mathod не найден как я могу решить эту проблему Thanks

+0

Если ваш 'alldata' функция будет' getall' в примере милостыня твоя? Я думаю, что это должно быть, но каким-либо образом дать https://laravel.com/docs/5.2/eloquent-relationships взгляд на лучшее установление отношений на модели, а не на загрузку беспорядочных соединений вручную. –

ответ

1

User :: найти (1) возвращает один экземпляр объекта (или NULL, если не найден).

Функция User :: all() возвращает коллекцию всех объектов пользователя.

Вам нужно создать запрос, то получит() результаты следующим образом ...

public static function alldata() 
    { 

    return self::query() 
     ->leftjoin('table1','users.id','=','table1.user_id') 
     ->leftjoin('table2','table1.orid','=','table2.id') 
     ->leftjoin('table3','table2.pra_id','=','table3.id') 
     ->get(); 
} 

Предполагая, что ваш метод вашего ALLDATA() находится в классе пользователя вы можете вызвать функцию со следующим кодом:

User::alldata(); 

У Laravel отличная система взаимоотношений с базой данных, на которую наиболее вызывающе стоит посмотреть. Было бы делать запросы, как один выше гораздо проще ...

https://laravel.com/docs/5.1/eloquent-relationships

+0

спасибо, но все равно получаю ту же ошибку –

+0

Предполагаю, что метод alldata() находится на вашей модели пользователя? Я обновил свой ответ. – RCrowt

+0

no sir its again Использование $ this, когда нет в контексте объекта –

Смежные вопросы