2016-01-05 6 views
0

Я хочу использовать несколько hasMany и принадлежит этой подкатегории, которая использует две функции, один для продуктов возврата и еще один раз для возвращаемых продуктов с условием orderBy. Как мне это сделать????Laravel multiple hasMany

class Category extends Eloquent{ 
    public function product(){ 
     return $this->hasMany('Product'); 
    } 
    public function product_ordered(){ 
     return $this->hasMany('product')->orderBy('updated_at','DESC'); 
    } 
} 

и файл продукта:

class Product extends Eloquent{ 
    public function Category(){ 
     return $this->belongsTo('category'); 
    } 
} 

и я хочу, чтобы использовать оба, что в различных Просмотры

вид 1:

@foreach($category->product_ordered as $x){ 
    ... 
} 

view2:

@foreach($category->product as $x){ 
    ... 
} 

Большое вам спасибо ...

+0

И что не работает с вышеуказанным кодом? –

+0

return $ this-> hasMany ('product') -> orderBy ('updated_at', 'DESC'); как аргумент имя вашего класса модели (продукта), сделать первый символ в верхнем регистре –

+0

Я не могу использовать то же самое вместе ... – Farshid

ответ

0

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

class Category extends Eloquent 
{ 
    public function product(){ 
     return $this->hasMany('Product'); 
    } 

    public function product_ordered(){ 
     return $this->product->sortByDesc('updatedAt'); 
    } 

} 
+0

спасибо за ваше уведомление и ответ. но он дает эту ошибку: ErrorException (E_ERROR) Недопустимый аргумент для foreach() (Вид: C: \ wamp \ www \ laravel-new \ app \ views \ index.blade.php) – Farshid

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