构建数据库模式Laravel4 vs Symfony2

时间:2014-04-25 10:30:50

标签: php symfony laravel laravel-4

为了说清楚,让我们做一个经典的例子 - 用户和帖子。

在Symfony2中创建数据库模式简洁明了:

  • 我们创建实体帖子和用户
  • 另外,我们可以简单地为每个列添加列/索引。
  • 然后只需在User中添加OneToMany注释,在Post
  • 中添加ManyToOne
  • ..好吧,那就是它。现在,如果我们运行db:schema:update --force并且我们可以得到我们想要的东西 - 数据库模式和简单的在数据库中添加另一行。

Laravel4怎么样?到目前为止,我发现只有解决方案:

  • 创建/生成帖子和用户模型
  • 在每个模型中声明它所引用的表
  • 创建迁移,并在迁移后将foregin密钥添加到user_id列
  • 运行迁移
  • 在每个模型中添加我们引用其他模型的方法(hasMany,belongsTo ..)

正如我所写的那样,它看起来并不复杂,但它并没有像在Symfony中那样集中在Laravel中。我是一个懒惰的人,我真的很喜欢Symfony的过程,而在Laravel,它有点过于分散。在Laravel中有没有更简单(lazier:P)的方法呢?像基于Model?

创建模式的东西

2 个答案:

答案 0 :(得分:2)

这个问题很有意义,但遗憾的是目前Laravel还没有这样的功能。

与从模型(symfony)运行迁移相反,您必须首先创建迁移,如果数据库表具有外键,则可以使用模型为数据库表设置种子。

我使用Jeffrey Way Generators https://github.com/JeffreyWay/Laravel-4-Generators

加快进程,例如,如果我有一个用户表和一个配置文件表(多对多),那么我将在命令行上执行这些任务:

php artisan generate:migration create_users_table --fields="username:string, password:string, email:string"
php artisan generate:migration create_profiles_table --fields="name:string, lastname:string, phone:string"

php artisan migrate

php artisan generate:pivot users profiles

php artisan migrate

然后你可以创建模型(你也可以生成一个完整的CRUD资源或脚手架)

php artisan generate:model user
php artisan generate:model profile

然后在您的用户模型中

public function profile()
{
return $this->belongsToMany('Profile');
}

在个人资料模型中

public function user()
{
return $this->belongsToMany('User');
}

答案 1 :(得分:0)

是的,有一些插件/命令可以加速开发。

例如Jeffrey Way's Laravel-4-Generators