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

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

將鑄件插入模型上

將鑄件插入模型上

PHP
慕少森 2023-08-19 16:31:29
我正在使用 Laravel 5.4。我設置了一個 $casts 數組:protected $casts =[   'language_meta' => 'object'];但是當我插入數組時:[ "meta_page_title_cc__c" => "Historic villa for sale within moments of central Florence" "meta_page_title_fr__c" => null "meta_page_title_it_cc__c" => "Villa prestigiosa in vendita situata appena fuori il centro storico di" "meta_page_title_ru_cc__c" => null "meta_description_it_cc__c" => "Situata in uno dei sobborghi residenziali più prestigiosi di Firenze, questa straordinaria villa storica in vendita è una rara scoperta architettonica che unisce al suo interno magnifiche caratteristiche originali." "meta_description_fr_cc__c" => null "meta_description_ru_cc__c" => null]我在該數組上運行 json_encode 并得到:{"meta_page_title_cc__c": "Historic villa for sale within moments of central Florence","meta_page_title_fr__c": null,"meta_page_title_it_cc__c": "Villa prestigiosa in vendita situata appena fuori il centro storico di","meta_page_title_ru_cc__c": null,"meta_description_it_cc__c ":"Situata in uno dei sobborghi residenziali pi\u00f9 prestigiosi di Firenze,questa straordinaria villa storica in vendita \u00e8 una rara scoperta architettonica che unisce al suo interno magnifiche caratteristiche originali.","meta_description_fr_cc__c ": null,"meta_description_ru_cc__c": null} 然后我嘗試插入這個,我懷疑由于“強制轉換”,它然后像這樣插入數據:"{\"meta_page_title_cc__c\":\"Luxury Property For Sale near Montecatini Tuscany\",\"meta_page_title_fr__c\":null,\"meta_page_title_it_cc__c\":\"Immobili di lusso in vendita vicino Montecatini Toscana\",\"meta_page_title_ru_cc__c\":null,\"meta_description_it_cc__c\":\"Casolare con finitura di pregio in vendita - Montecatini Toscana\",\"meta_description_fr_cc__c\":null,\"meta_description_ru_cc__c\":null}"我無法通過遷移將列設置為“json”,因此已將該列設置為長文本。有沒有辦法正確插入數據,然后通過 $casts 選項將該數據解碼為預期的結果?我注意到刪除 $casts 和 json 數據會正確輸入。也許有一種方法可以使用 $casts 并正確存儲對象?
查看完整描述

1 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您可以使用Mutators來實現這一點,如下所示:

class MyModel extends Model

{

? ? public function setLanguageMetaAttribute(array $meta)

? ? {

? ? ? ? $this->attributes['language_meta'] = json_encode($meta); // Store as json encoded string

? ? }


? ? public function getLanguageMetaAttribute(string $meta)

? ? {

? ? ? ? return json_decode($meta, true); // Return as associative php array

? ? }

}

現在你可以像這樣使用它:


? ? $model = MyModel::find($some_id); // Or however you want to select

? ? $model->language_meta = [

? ? ? ? "meta_page_title_cc__c" => "Historic villa for sale within moments of central Florence"

? ? ? ? "meta_page_title_fr__c" => null

? ? ? ? "meta_page_title_it_cc__c" => "Villa prestigiosa in vendita situata appena fuori il centro storico di"

? ? ? ? "meta_page_title_ru_cc__c" => null

? ? ? ? "meta_description_it_cc__c" => "Situata in uno dei sobborghi residenziali più prestigiosi di Firenze, questa straordinaria villa storica in vendita è una rara scoperta architettonica che unisce al suo interno magnifiche caratteristiche originali."

? ? ? ? "meta_description_fr_cc__c" => null

? ? ? ? "meta_description_ru_cc__c" => null

? ? ];

? ??

? ? $model->save(); // Persists in DB as json

當你去檢索它時,它已經是一個數組,所以你可以這樣做:


? ? $model = MyModel::find($some_id); // Or however you want to select


? ? foreach ($model->language_meta as $key => $value) {

? ? ? ? // Whatever you want to do with the meta here

? ? }


查看完整回答
反對 回復 2023-08-19
  • 1 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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