第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

多對(duì)多(多態(tài))使用同一個(gè)模型不同類(lèi)型

多對(duì)多(多態(tài))使用同一個(gè)模型不同類(lèi)型

PHP
ITMISS 2022-01-02 15:54:20
我在數(shù)據(jù)庫(kù)中有這 3 個(gè)表:我正在使用多對(duì)多(多態(tài))雄辯關(guān)系來(lái)連接模型。的問(wèn)題是,所述Creadores表可以是類(lèi)型artista或autor在Creaciones表中。是否可以告訴 Eloquent 何時(shí)使用artista或autor?如果我將Creador模型擴(kuò)展到其他 2 個(gè)模型,它會(huì)起作用:Artista和Autor. 但是,當(dāng)我想顯示所有creacionesA的creador使用Creador模式,因?yàn)槎鄳B(tài)關(guān)系與擴(kuò)展模型創(chuàng)建是不可能的。Libro 型號(hào):<?phpnamespace App;use Illuminate\Database\Eloquent\Model;use ChrisKonnertz\BBCode\BBCode;class Libro extends Model{    protected $table = 'Libros';    // Return all the artists of the book    public function artistas()    {        return $this->morphedByMany('App\Creador', 'creador', 'creaciones');    }    // Return all the authors of the book    public function autores()    {        return $this->morphedByMany('App\Creador', 'creador', 'creaciones');    }}克雷多型號(hào):<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class Creador extends Model{    protected $table = 'creators';    // Return all the books where author    public function autorLibros()    {        return $this->morphToMany('App\Libro', 'creador', 'creaciones');    }    // Return all the books where artist    public function artistaLibros()    {        return $this->morphToMany('App\Libro', 'creador', 'creaciones');    }}
查看完整描述

2 回答

?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

您最好在其中添加一個(gè)type屬性Creadorwith 'artista'/ 'autor'。


多態(tài)關(guān)系只能采用單一模型。所以你的代碼會(huì)變成:


public function creadors()

{

    // Return a general relation for all 'creadores'.

    return $this->morphedByMany(App\Creador::class, 'creador', 'creaciones');

}


public function artistas()

{

    // Filter for 'artista's.

    return $this->creadors()->where('type', 'artista');

}


public function autores()

{

    // Filter for 'autor's.

    return $this->creadors()->where('type', 'autor');

}


查看完整回答
反對(duì) 回復(fù) 2022-01-02
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

用下面的方法解決了。將關(guān)系從多態(tài)多對(duì)多更改為普通多對(duì)多,添加withPivot和wherePivot。


克里多爾模型


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class Creador extends Model

{

    protected $table = 'creators';


    public function libros()

    {

        return $this->belongsToMany('App\Libro', 'creaciones')->withPivot('creador_type');

    }


    // All books as an Artist

    public function librosArtista()

    {

        return $this->libros()->wherePivot('creador_type', 1);

    }


    // All books as an Author

    public function librosAutor()

    {

        return $this->libros()->wherePivot('creador_type', 2);

    }

}

Libro 模型


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;

use ChrisKonnertz\BBCode\BBCode;


class Libro extends Model

{

    protected $table = 'libros';


    public function creador()

    {

        return $this->belongsToMany('App\Creador', 'creaciones')->withPivot('creador_type');

    }


    // All book artists

    public function artistas()

    {

        return $this->creador()->wherePivot('creador_type', 1);

    }


    // All book authors

    public function autores()

    {

        return $this->creador()->wherePivot('creador_type', 2);

    }

}

當(dāng)創(chuàng)建一個(gè)附加Creador到 a 時(shí)Libro:


$libro->artistas()->attach( $creador, [

    'creador_type' => 1

]);


查看完整回答
反對(duì) 回復(fù) 2022-01-02
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)