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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel Eloquent 'with' 返回 null,但引用對象本身的關(guān)系返回正確的值

Laravel Eloquent 'with' 返回 null,但引用對象本身的關(guān)系返回正確的值

PHP
蝴蝶刀刀 2022-12-23 15:09:24
如果能幫助我理解我在 laravel 6.8 項目中看到的以下差異,我將不勝感激:我有一個“UserAlert”模型class UserAlert extends Model{    /**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = [        'user_id', 'from_id', 'subject', 'message'    ];    //Relationships    public function user()    {        return $this->belongsTo(User::class);    }    //Only include the name of the sender in this relationship    public function from()    {        return $this->hasOne(User::class, 'id', 'from_id')->select('name');    }}“用戶”關(guān)系是默認的“user_id”到“id”,并且按預期工作。如您所見,“來自”關(guān)系從與 UserAlert 的“from_id”關(guān)聯(lián)的用戶模型中提取名稱。如果我獲得 UserAlerts 的集合,然后對其進行迭代以獲取每個 UserAlerts 的“來源”關(guān)系,如下所示:$thisUserAlerts = \App\UserAlert::where('user_id', $thisUser->id)->get();foreach ($thisUserAlerts as $userAlert) {    dump($userAlert->from);}然后我確實按照我的意愿從“來自”關(guān)系中看到了名字:...#original: array:1 [    "name" => "Administrator"  ]...但是,如果我嘗試使用“with”將關(guān)系直接包含在 UserAlert 集合中,則“from”始終為空。$thisUserAlertsWith = \App\UserAlert::where('user_id', $thisUser->id)->with('from')->get();dump($thisUserAlertsWith);...#relations: array:1 [        "from" => null      ]...我可以從查詢?nèi)罩局锌吹?,當我?zhí)行上述操作時,沒有從用戶表中提取名稱的 sql 查詢,但是當我遍歷集合并直接調(diào)用“->from”時,就會進行查詢。我誤解了“與”嗎?[為清楚起見,編輯以消除示例中的差異]
查看完整描述

1 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

對于要包含的關(guān)系,事實證明您必須在集合中包含主鍵 (id)。

所以第一個答案是修改關(guān)系

return $this->hasOne(User::class, 'id', 'from_id')->select('name');

return $this->hasOne(User::class, 'id', 'from_id')->select(['id', 'name']);

然后我的原始示例按預期工作。

對此進行研究也讓我想到了另一種選擇,即不限制關(guān)系本身的字段,而是在“with”調(diào)用中限制它們。

所以從關(guān)系中完全刪除選擇:

return $this->hasOne(User::class, 'id', 'from_id')

而是使用以下內(nèi)容過濾集合:

$userAlerts =  UserAlert::where('user_id', $id)->with('from:id,name')->get();

同樣,您必須包含主鍵 (id) 才能正常工作。


查看完整回答
反對 回復 2022-12-23
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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