我已经从 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)
答案 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