簡體   English   中英

在laravel關系中設置foreingn表的位置

[英]set where for foriegn table in laravel relation

我有一個與其他表有很多關系的表,但它與entity值分開,請查看:

我有這個架構

    public function up()
    {
        Schema::create('cards', function(Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->integer('user_id')->unsigned()->nullable();
            $table->integer('entity_id');
            $table->string('entity');
            $table->integer('qty')->nullable()->default('1');
        });
    }


    public function up()
    {
        Schema::create('tickets', function(Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->string('title');
            $table->string('summary');
            $table->integer('amount');
            $table->integer('stock')->default('0');
            $table->integer('discount')->default('0');
        });
    }

    public function up()
    {
        Schema::create('products', function(Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->integer('title');
            $table->integer('amount');
            $table->integer('discount');
            $table->text('description');
            $table->integer('stock')->default('0');
        });
    }

和模型中的這種關系



class Card extends Model 
{

    protected $table = 'cards';
    public $timestamps = true;

    public function ticket()
    {
        return $this->belongsTo('App\Models\Ticket', 'entity_id');
    }

    public function product()
    {
        return $this->belongsTo('App\Models\Product', 'entity_id');
    }

}


我需要先設置where entity = 'ticket'在使用belongsTo之前,我的意思是表與許多表具有基本的entity_id關系,並且我按entity列將其分開,並且基本相同的vlue僅具有實現作用。

您可以簡單地在雄辯的模型文件中進行操作。 這樣做:

public function ticketWithCondition()
{
    return $this->belongsTo('App\Models\Ticket', 'entity_id')->where('entity' , 'ticket');
}

public function ticket()
{
    return $this->belongsTo('App\Models\Ticket', 'entity_id');
}

像這樣打電話:

// for show Card with EntityCondition
$comments = Card::find(123)->with('ticketWithCondition');

// for show comments without EntityCondition
$comments = Card::find(123)->with('ticket');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM