0

我使用 Laravel 5.2 和 Entrust 包进行 ACL 的一个项目。在这个项目中,我需要一个角色('venue_owner'),其中场地是所有者。我也调用了表格venue,但我不知道如何建立这种关系,因为表格users适用于所有类型的用户。

如何使这种关系user从角色中知道什么venue_owner是什么的所有者venues

4

1 回答 1

1

您是否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'); 
        }

在您的VenuesEloquent 模型类中,您可以执行以下操作:

<?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'); 
        }

最后但并非最不重要的是,在您的UsersEloquent 模型类中,您可以执行以下操作:

<?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.

于 2016-08-15T11:02:01.297 回答