So verwenden Sie benutzerdefinierte Felder in der polymorphen Laravel-ORM-Assoziation
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 16:47:59
0
1
594

Es gibt drei Tabellen wie folgt

Geschäft:

id Besitzercode owner_type
1 WSWJDIXSWS Unternehmen
2 ADSOOEKL23 persönlich

Unternehmen:

id Code Name
1 WSWJDIXSWS ibm
2 SDFSDFSDFS h3c

presonal:

id Code Name
1 ADSOOEKL23 Jack
2 SDFSDFSDFS braun

Entsprechendes Modell

Modellunternehmen:

    class Company extends Model
    {
        public function business() {
            return $this->morphMany('App\Models\Business', 'owner');
        }
    }

Model persönlich:

    class Personal extends Model
    
        {
            public function business() {
                return $this->morphMany('App\Models\Business', 'owner');
            }
        }

Modellgeschäft:

    class Business extends Model
    {
    
        public function owner(){
            //return $this->morphTo();
            return $this->morphTo('owner', 'owner_type', 'owner_code');
        }
    }

IndexController:

    class IndexController extends Controller
    {
        public function index(){
            //DB::connection()->enableQueryLog();
            //$queries = DB::getQueryLog();
            $businesses = Business::get();
            $businesses->load('owner');
    
            return view('index')->with(compact('businesses'));
    
        }
    }

view:index.blade

    <table bgcolor="#7fffd4"  width="400">
        <tr>
            <td colspan="3" bgcolor="#f5f5dc" align="center">BUSINESS</td>
        </tr>
        <tr>
            <td bgcolor="#f0f8ff">ID</td>
            <td bgcolor="#f0f8ff">OWNER_TYPE</td>
            <td bgcolor="#f0f8ff">NAME</td>
        </tr>
        @foreach($businesses as $business)
        <tr>
            <td bgcolor="#f0f8ff">{{$business->id}}</td>
            <td bgcolor="#f0f8ff">{{$business->owner_type}}</td>
            <td bgcolor="#f0f8ff">{{object_get($business->owner, 'name', 'unfind')}}</td>
        </tr>
        @endforeach
    </table>

Die Ergebnisse nach der Ausführung sind alle unauffindbar!

Debugger-Komponente verwenden
Die ausgeführte Anweisung lautet wie folgt:

select * from `businesses`
select * from `companies` where `companies`.`id` in ('')
select * from `personals` where `personals`.`id` in ('')

Die Dokumentation von Laravel verwendet etwas Ähnliches, „owner_typeowner_id“, aber es wird nicht erwähnt, wie man Felder selbst definiert.
Ich habe lange gekämpft, bitte erklären Sie es mir, ich wäre Ihnen sehr dankbar

曾经蜡笔没有小新
曾经蜡笔没有小新

Antworte allen(1)
左手右手慢动作

多看文档多实践多用智能IDE。morphMany有5个参数。

Ps.以后注意一下排版。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage