我是否必须执行数据库迁移才能执行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)或';'或'{'
答案 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
无关