Laravel 5.1雄辩的多对多关系

时间:2015-12-15 15:58:12

标签: php laravel-5.1

我是否必须执行数据库迁移才能执行Eloquent多对多关系,或者我可以在没有数据库迁移的情况下执行此操作吗?

我的桌子是;

k_p_user和字段是; ID,名称,日期E

k_p_tree和字段是; ID,USER_ID,bear_id,名称,日期E

k_p_bear和字段是; ID,USER_ID,名称,日期E

k_p_picnic和字段是; ID,USER_ID,bear_id,名称,日期E

我正在使用netbeans 8.0.2

这是我的k_p_picknic模型

parent

这是我的控制器

<?php namespace App
use Illuminate\Database\Eloquent\Model;
class k_p_picnic extends Model{
}
?>

这是我的错误

  

k_p_picnic.php第8行中的FatalErrorException:语法错误,意外   'use'(T_USE),期待\(T_NS_SEPARATOR)或';'或'{'

2 个答案:

答案 0 :(得分:2)

不,Eloquent关系不需要迁移。迁移只是在PHP中提供了一个简单的界面来创建和维护数据库表。如果您已经有预先存在的数据库表或另一种创建它们的方法,则没有问题。

如果您对“多对多”关系感到困惑,请务必阅读docs。对于该关系类型,您将需要一个包含要连接的两个模型的ID的数据透视表。好像你的k_p_picnic表就好了。然后,您需要在模型对象上定义每个关系。如果不遵循正常的Laravel表命名约定,则可以包含表名。在你的情况下,你不是,所以只是作为第二个参数传递它。例如,您的用户模型将使用此方法:

public function bears()
{
    return $this->belongsToMany('App\Bear', 'k_p_picnic');
}

答案 1 :(得分:0)

我已经看到了错误

在我的模型中

而不是<?php namespace App;
我写了<?php namespace App

谢谢大家,特别是dipesh和Andy Noelker。我现在知道我可以有一个预先存在的数据库,迁移与Eloquent

无关