具体角色关系

Specific role relations

我在一个项目中使用 Laravel 5.2 和 ACL 的 Entrust 包。 在这个项目中,我需要一个角色 ('venue_owner'),其中 venue 是所有者。我还 table 调用了 venue 但我不知道如何建立这种关系,因为 table users 对所有类型的用户都是通用的。

如何让这个关系知道角色 venue_owner 中的 uservenues 的所有者?

您 运行 宁 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 和他的 venuesroles & permissions 的所有信息