与Symfony的学说相比,Laravel的ORM如何运作

时间:2014-05-01 23:25:40

标签: php symfony laravel doctrine

我是一名Symfony 2开发者,他在Laravel开始。我对Laravel的ORM有点失落,似乎我们必须直接处理数据库以手动创建表...在Symfony上,这是由Doctrine根据映射类(和@ORM注释)自动生成的。

这个概念在Laravel上是完全不同的,还是我没有找到像在Symfony上那样做的方法?

2 个答案:

答案 0 :(得分:2)

你的问题不够明确,但我想你想知道Eloquent如何建模地图表,在这种情况下你必须使用你的表名(在数据库中)这个单词的复数形式(但不是强制性的) ),例如,用于包含用户数据的表应该是users,或者对于发布数据,表应该是posts,但您可以使用任何您想要的内容。

使用Eloquent模型映射users表;所有你需要做的事情;创建一个这样的模型:

Post extends Eloquent {
    //...
}

现在你可以使用这样的东西:

$posts = Post::all();
$post = Post::find(1);

Laravel将从posts表进行查询,但如果您的表名不同于Laravel想要的标准方式,那么您必须告诉Laravel表名是什么通过在模型中添加属性,例如:

Post extends Eloquent {
    protected $table = 'article'; // Laravel will query from article table
    //...
}

您可以使用Post型号作为;

// Laravel will query from article table in the database
// because you gave the $table property with the table name

$posts = Post::all();
$post = Post::find(1);

详细了解the manual

答案 1 :(得分:1)

Laravel有像DoctrineMigrationsBundle这样的迁移,所以在你的模型(权利)中你只需写(例如):

class YourClass extends Eloquent {
}

因此无需使用属性对模型进行过度充电,laravel会自动执行此操作

http://laravel.com/docs/migrations了解有关移民的更多信息