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

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

使用 Tinker CLI 時(shí),Laravel 如何查找并顯示 Eloquent 模型上的動(dòng)態(tài)屬性?

使用 Tinker CLI 時(shí),Laravel 如何查找并顯示 Eloquent 模型上的動(dòng)態(tài)屬性?

PHP
大話西游666 2023-09-08 10:49:49
當(dāng)我們使用artisan tinker, 并引用 Eloquent 模型對象時(shí),REPL 會(huì)自動(dòng)打印模型的屬性,就像它打印我們引用的任何標(biāo)準(zhǔn)對象的公共屬性一樣:>>> (object) ['hello' => 'world'] => {      +"hello": "world",    }>>> App\User::first() => App\User {      id: 1,      name: "...",   }對我來說不太明顯的是如何使這些虛擬屬性出現(xiàn)在這里,就好像它們已經(jīng)被定義為類的公共屬性一樣。我知道模型的大部分屬性分配都是由該HasAttributes特征在內(nèi)部處理的,但即使查看那里,我仍然不明白 Laravel 作者如何能夠?qū)崿F(xiàn)這種行為。我嘗試過建立一個(gè)這樣的課程:class Bunch implements Arrayable, ArrayAccess, Jsonable, JsonSerializable { ... }但即使使用有效的數(shù)組訪問和toArray方法,當(dāng)我直接從以下位置引用它時(shí)artisan tinker:>>> $b = new Bunch() => Bunch {}>>> $b->one = 1 => 1>>> $b['one'] => 1>>> $b => Bunch {}當(dāng) REPL 打印這樣的對象時(shí),我們?nèi)绾胃乃褂玫谋硎拘问剑?
查看完整描述

2 回答

?
牛魔王的故事

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

決定如何在 Tinker 中顯示模型屬性的代碼位于 Tinker 代碼中,而不是模型中:

Casters 是Symfony VarDumper 組件的一部分,?PsySH使用該組件來顯示類。Tinker 是建立在 PsySH 之上的。

Tinker 將腳輪映射到其 Console 命令類中的類:

這將返回類到其施法者的映射:

/**

? ? ?* Get an array of Laravel tailored casters.

? ? ?*

? ? ?* @return array

? ? ?*/

? ? protected function getCasters()

? ? {

? ? ? ? $casters = [

? ? ? ? ? ? 'Illuminate\Support\Collection' => 'Laravel\Tinker\TinkerCaster::castCollection',

? ? ? ? ? ? 'Illuminate\Support\HtmlString' => 'Laravel\Tinker\TinkerCaster::castHtmlString',

? ? ? ? ? ? 'Illuminate\Support\Stringable' => 'Laravel\Tinker\TinkerCaster::castStringable',

? ? ? ? ];


? ? ? ? if (class_exists('Illuminate\Database\Eloquent\Model')) {

? ? ? ? ? ? $casters['Illuminate\Database\Eloquent\Model'] = 'Laravel\Tinker\TinkerCaster::castModel';

? ? ? ? }


? ? ? ? if (class_exists('Illuminate\Foundation\Application')) {

? ? ? ? ? ? $casters['Illuminate\Foundation\Application'] = 'Laravel\Tinker\TinkerCaster::castApplication';

? ? ? ? }


? ? ? ? return $casters;

? ? }

這將設(shè)置 VarDumper 上的腳輪:


? ? ? ? $config->getPresenter()->addCasters(

? ? ? ? ? ? $this->getCasters()

? ? ? ? );

如果要從模型中添加要在 Tinker 中顯示的其他屬性,可以在模型上使用 $ appends屬性:


<?php


namespace App\Models;


use Illuminate\Database\Eloquent\Model;


class User extends Model

{

? ? /**

? ? ?* The accessors to append to the model's array form.

? ? ?*

? ? ?* @var array

? ? ?*/

? ? protected $appends = ['is_admin'];

}


查看完整回答
反對 回復(fù) 2023-09-08
?
慕容3067478

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

Eloquent 使用設(shè)置的數(shù)據(jù)庫連接自動(dòng)填充模型屬性。



查看完整回答
反對 回復(fù) 2023-09-08
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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