【发布时间】:2016-05-01 17:23:19
【问题描述】:
我为我的应用程序创建了一个 laravel api。我为不同的模块使用了 Pingpong 模块包。我很难建立多对多关系。我有 3 个表:roles,groups,group_roles。我的模型是:
组.php
namespace Modules\User\Entities;
use Illuminate\Database\Eloquent\Model;
class Group extends Model {
protected $fillable = [];
protected $table='groups';
public static function roles(){
return $this->belongsToMany('Modules\User\Entities\Role','group_roles','group_id','role_id');
}
}
角色.php
namespace Modules\User\Entities;
use Illuminate\Database\Eloquent\Model;
class Role extends Model {
protected $fillable = [];
protected $table='roles';
public function groups(){
return $this->belongsToMany('Modules\User\Entities\Group','group_roles','group_id','role_id');
}
}
还有我的控制器
namespace Modules\User\Http\Controllers;
use Pingpong\Modules\Routing\Controller;
use Modules\User\Entities\Group;
use Modules\User\Entities\Role;
use Illuminate\Http\Request;
use App\Login;
use Input;
use Validator;
use Hash;
use Response;
class UserController extends Controller {
public function getGroupById(Request $request){
$groups=Group::with('roles')->get();
return Response::json ([
'status'=>'ok',
'group'=>$groups
],200);
}
}
问题是我无法建立模型之间的关系,getGroupById 返回 500 内部错误响应。$group=Group::all(); $group=Group::find($request['id']); 返回正常,但未返回相关角色。
类似的结构和代码在不使用乒乓球的应用上也能正常工作。
【问题讨论】:
标签: laravel orm eloquent many-to-many