我是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');
}
}
因为我不知道如何在laravel 4中加入2个表,我有一个条件是从我的类别中查找所有帖子,它不属于类别名称“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”,因为有些案例需要从新旧订购
答案 0 :(得分:0)
可以使用简单的joins
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();
答案 1 :(得分: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();