我使用 Laravel 5.2 和 Entrust 包进行 ACL 的一个项目。在这个项目中,我需要一个角色('venue_owner'),其中场地是所有者。我也调用了表格venue
,但我不知道如何建立这种关系,因为表格users
适用于所有类型的用户。
如何使这种关系user
从角色中知道什么venue_owner
是什么的所有者venues
?
您是否Migrations
通过运行创建了您的尚未:php artisan enthrust:migration
?如果不是,请运行它,然后在生成的文件中,up()
在 Enthrust 迁移文件的方法中添加您自己的表,如下所示:
<?php
public function up() {
// SOME OTHER TABLE CREATION CODES...
Schema::create('venue_owner', function (Blueprint $table) {
$table->increments('id');
$table->integer("user_id")->unsigned();
$table->timestamps();
// CREATE THE ASSOCIATION/RELATIONSHIP USING FOREIGN KEY
$table->foreign('id')
->references('id')
->on('venue')
->onDelete('cascade');
});
Schema::create('venues', function (Blueprint $table) {
$table->increments('id');
$table->integer("venue_owner_id")->unsigned();
$table->string("venue");
$table->timestamps();
// CREATE THE ASSOCIATION/RELATIONSHIP USING FOREIGN KEY
$table->foreign('venue_owner_id')
->references('id')
->on('venue_owner');
});
}
public function down() {
// OTHER DROP COMMAND CODES...
Schema::drop('venue_owner');
Schema::drop('venues');
}
然后在您的雄辩模型类中,您可以明确设置$this->hasMany()
如下:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class VenueOwner extends Model {
/**
* GET ALL THE venues FOR THE venue_owner .
*/
public function venues() {
return $this->hasMany('App\Venues');
}
/**
* GET ALL THE user FOR THE venue_owner .
*/
public function user() {
return $this->hasOne('App\User');
}
在您的Venues
Eloquent 模型类中,您可以执行以下操作:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Venues extends Model {
/**
* GET THE venue_owner FOR venue(s).
*/
public function venueOwner() {
return $this->belongsTo('App\VenueOwner');
}
最后但并非最不重要的是,在您的Users
Eloquent 模型类中,您可以执行以下操作:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users extends Model {
/**
* GET THE user Information FOR venue_owner.
*/
public function venueOwner() {
return $this-> hasOne('App\VenueOwner');
}
现在,您可以获取有关venue_owner
和他的所有信息venues
以及roles & permissions
使用user_id
.