Laravel 4, как заказать и присоединиться к красноречивым

0

Im новый в Laravel 4, и сейчас я кодирую небольшой проект, я использую laravel в качестве фреймворка для создания своего сайта, но мой код всегда удивляюсь оптимизации или нет, потому что в моей модели я только что написал:

Категория Модель

     public function parents()
    {
        return $this->belongsTo('Category', 'cat_father');
    }

     public function children()
    {
        return $this->hasMany('Category', 'cat_father');
    }

}

Модель публикации:

<?php
class Post extends BaseModel{
    public $table = "post";
    protected $primaryKey = 'idpost';

     public function Category()
    {
        return $this->belongsTo('Category', 'cat_id');
    }



}

потому что я не знал, как присоединиться к 2 таблицам в laravel 4, у меня есть условие найти все сообщения из моих категорий, которые он не принадлежал к названию категории "Reunion", но я не знал, как это сделать, поэтому я написал для этой цели 2 строки кода (им не уверен, что написанный код в контроллере - лучший способ, но я не знал, как вызвать метод от модели до контроллера и получить возвращаемое значение)

Мой метод от контроллера для выбора всего сообщения, он не относится к названию категории "Reunion"

public function getAllPostView()
    {       
        $getCat = Category::where('cat_name','=', 'Reunion')->firstOrFail();                            
        $post = Post::where('cat_id', '!=', $getCat->idcategory)->get();
        return View::make('layouts.post')->with('post',$post);
    }   

Мой вопрос, мой код оптимизирован, когда я написал его в контроллере? и как написать его в модели и получить параметр для передачи его контроллеру и использовать его для просмотра. Второй вопрос заключается в том, как заказать "POST", потому что некоторые случаи должны быть заказаны от нового до старого

Теги:
eloquent
laravel-4

2 ответа

0

Вот как вы это делаете:

$exclude = 'Reunion';

$posts = Post::select('posts.*')->join('categories', function ($j) use ($exclude) {
  $j->on('posts.cat_id', '=', 'categories.idcategory')
    ->where('categories.name', '<>', $exclude);
})->get();
0

может просто использовать простые объединения

public function getAllPostView()
{       
    $getCat = Category::where('cat_name','=', 'Reunion')  
            ->join('post','post.cat_id', '!=','Category.idcategory')->get();
    return View::make('layouts.post')->with('post',$post);
}   

Следите за одинаковыми именами полей в обеих таблицах, если это возможно, используя select

$getCat = Category::select('Category.idcategory as cat_id','Category.cat_id as pos_id','many other fields')
               // 'as cat_id' not required for unique field names
            ->join('post','post.cat_id', '!=','Category.idcategory')
            ->where('cat_name','=', 'Reunion')  
            ->get();
  • 0
    Это ваше соединение совершенно неверно.
  • 0
    почему мой дорогой друг ??
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню