2015-12-15 62 views
2

我必须做数据库迁移才能做到雄辩多对多关系,还是我可以在没有数据库迁移的情况下做到这一点?Laravel 5.1雄辩多对多关系

我的表格是;

k_p_user和字段是; id,name,datee

k_p_tree和fields are; id,user_id,bear_id,name,datee

k_p_bear和fields are; id,user_id,name,datee

k_p_picnic和fields are; ID,USER_ID,bear_id,姓名,日期E

我使用NetBeans 8.0.2

这是我k_p_picknic

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

型号这是我的控制器

<?php 
namespace App\Http\Controllers; 
use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 
use App\k_p_picnic; 
use Illuminate\Support\Facades\Request as Request; 
class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 

    public function fixoption($table){ 
     $gender= k_p_picnic::all(); 
     dd($gender) 
     return view('profile',['jj'=>$gender]); 
    } 
} 
?> 

这是我的错误

FatalErrorExcep第8行:语法错误,意外 'use'(T_USE),期待\(T_NS_SEPARATOR)或';'或'{'

+0

不,您可以使用Eloquent而无需数据库迁移。 [Laravel Migrations](http://laravel.com/docs/5.1/migrations#introduction)_迁移就像数据库的版本控制,允许团队轻松修改和共享应用程序的数据库模式。迁移通常与Laravel的架构构建器配合使用,以轻松构建应用程序的数据库架构。它与雄辩无关。 – dipesh

回答

2

不,迁移对于雄辩关系不是必需的。迁移只是在PHP中为创建和维护数据库表提供了一个简单的界面。如果您已有预先存在的数据库表或创建它们的替代方法,则不存在问题。

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

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

我所看到的,则错误

在我的模型

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

谢谢大家你的美丽答案尤其是迪佩什和安迪诺尔克。我现在知道我可以有一个预先存在的数据库,迁移与Eloquent没有任何关系