亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Laravel 7 Eloquent:模型上的方法刷新()忽略默認(嵌套)急切加載

Laravel 7 Eloquent:模型上的方法刷新()忽略默認(嵌套)急切加載

PHP
隔江千里 2023-09-22 14:50:33
我正在保存/更新模型并使用刷新()方法來輸出新數據。Laravel 文檔說:如果您計劃在使用 save 或 saveMany 方法后訪問關系,您可能希望使用刷新方法重新加載模型及其關系控制器  public function store()  {    //    $comic = new Comic;    $comic->fill($this->validateComic());    $comic->save();    return $comic->refresh();  }  public function update(Comic $comic)  {    //    $comic->fill($this->validateComic());    $comic->save();    return $comic->refresh();  }模型在漫畫模型中,我定義了默認的急切加載:  protected $with = ['series', 'series.publisher'];這非常適合簡單的 GET 方法。但如果我保存模型并對其使用刷新() ,輸出就會失去其關系。store() 和 update() 方法的行為也不同。store ()方法沒有給我任何關系。update ()方法僅返回系列關系(但不返回嵌套關系)。這是一個錯誤還是我在文檔中遺漏了某些內容?謝謝。示例數據{"comic_id":21,"series_id":5,"comic_issue":"2","comic_name":"Test after 6","status_id":1,"comic_rating":null,"comic_release_date":"2015-09-26","comic_read_date":null,"comic_summary":"Summary 5","created_at":"2020-08-07T17:28:14.000000Z","updated_at":"2020-08-08T17:14:16.000000Z","series":    {    "series_id":5,    "series_name":"Assumenda consectetur.",    "publisher_id":4,    "release_date":null,    "publisher":        {        "publisher_id":4,        "publisher_name":"Aliquam earum."        }    }}
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

這實際上是預期的refresh工作方式。refresh僅重新加載已加載的關系。在第一個示例中,沒有加載任何關系,因為該模型不是從數據庫中檢索的,它是您直接創建的全新模型實例。第二個示例很可能是路由模型綁定,其中模型已從數據庫返回,并且因為您正在使用它protected $with,所以它已加載這些關系,因此它會重新加載這些關系。



查看完整回答
反對 回復 2023-09-22
  • 1 回答
  • 0 關注
  • 100 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號