订购表格数据

时间:2015-09-18 04:32:32

标签: laravel eloquent

我已经从 laravel 5.1文档中读到了这篇文章:

$users = DB::table('users')
         ->orderBy('name', 'desc')
         ->get(); 

我没有想到在哪里写这个。

这就是我试图在Model

中写的内容
class Professor extends Model
{
   $professor = DB:table('professor')->orderBy('name','asc')->get();
}

也尝试过:

class Professor extends Model
{
   Professor::orderBy('name')->get();
   //$professor = Professor::orderBy('name')->get();
}  

没有任何作用e.e 所有这些都给我错误:

  

语法错误,意外的'$ professor'(T_VARIABLE),期待函数(T_FUNCTION)

3 个答案:

答案 0 :(得分:1)

它不需要在模型中。大部分时间都是在控制器中。

在模型中,您需要定义将在应用程序范围内用于对象的关系或函数。

如果你想在模型中做类似的事情,你不会使用DB :: table,你需要这样的东西:

class Professor extends  \Eloquent
{
   public function professorsByName(){
        $professionCollection = Professor::all()->orderBy('name','asc')->get();
        return $professionCollection;
    }
}

请以它为例,它不应该出现在模型中,至少这个简单而不是。

精神笔记 如果没有执行,请不要使用DB :: table来引导观察者。

答案 1 :(得分:1)

您尝试编写的代码段不应放在模型中。如果您使用存储库模式,它应该在控制器或存储库中。

假设您的代码中包含以下内容。

一张叫做教授的桌子。模范教授。一个名为ProfessorsController的控制器。 以及包含以下代码get('professors','ProfessorsController@index');

的路径文件

然后在控制器上你应该有以下代码。

class ProfessorsController extends Controller {

    public function index()
    {
       $professors = \DB:table('professors')->orderBy('name','asc')->get();
       return view('proffesors')->with('proffessors',$professors); 
    }
}

这将返回视图中教授的订单列表。也就是说,如果您使用视图来表示数据。

答案 2 :(得分:1)

我认为你们都错过了

的主要问题
class Professor extends Model
{
   $professor = DB:table('professor')->orderBy('name','asc')->get();
}

这不是PHP类的工作方式。

OP,你需要了解OOP的概念。

你需要的是这样的东西:

你的控制器:

public function myRoutedMethod()
{
    $professors = Professor::getModel()->orderBy('name','asc')->get();
     foreach($professors as $professor)
    {
     var_dump($professor->toArray();
    }
}

或者甚至可能更好,创建一个与您的模型接口的存储库,只需调用$ repository-> professors() - > toArray();

Google搜索:Laravel Repository