具体角色关系
Specific role relations
我在一个项目中使用 Laravel 5.2 和 ACL 的 Entrust 包。
在这个项目中,我需要一个角色 ('venue_owner'),其中 venue 是所有者。我还 table 调用了 venue
但我不知道如何建立这种关系,因为 table users
对所有类型的用户都是通用的。
如何让这个关系知道角色 venue_owner
中的 user
是 venues
的所有者?
您 运行 宁 php artisan enthrust:migration
创建了 Migrations
了吗?如果不是,运行 它,然后在生成的文件中,在 Enthrust 迁移文件的 up()
方法中添加您自己的表格,如下所示:
<?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');
}
然后在您的 Eloquent 模型 Class 中,您可以像这样显式设置 $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 模型 Class 中,您可以执行以下操作:
<?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 模型 Class 中,您会执行以下操作:
<?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');
}
现在,您可以使用 user_id
.
获取有关 venue_owner
和他的 venues
和 roles & permissions
的所有信息
我在一个项目中使用 Laravel 5.2 和 ACL 的 Entrust 包。
在这个项目中,我需要一个角色 ('venue_owner'),其中 venue 是所有者。我还 table 调用了 venue
但我不知道如何建立这种关系,因为 table users
对所有类型的用户都是通用的。
如何让这个关系知道角色 venue_owner
中的 user
是 venues
的所有者?
您 运行 宁 php artisan enthrust:migration
创建了 Migrations
了吗?如果不是,运行 它,然后在生成的文件中,在 Enthrust 迁移文件的 up()
方法中添加您自己的表格,如下所示:
<?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');
}
然后在您的 Eloquent 模型 Class 中,您可以像这样显式设置 $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 模型 Class 中,您可以执行以下操作:
<?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 模型 Class 中,您会执行以下操作:
<?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');
}
现在,您可以使用 user_id
.
venue_owner
和他的 venues
和 roles & permissions
的所有信息