Laravel 5.2 と ACL の Entrust パッケージを使用して 1 つのプロジェクトに取り組んでいます。このプロジェクトでは、会場が所有者である 1 つの役割 (「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()
次に、Eloquent Model Class で、次のように明示的に設定できます。
<?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
。