代码之家  ›  专栏  ›  技术社区  ›  Isral Bustami

正在尝试从模型中获取数组值。10月CMS

  •  0
  • Isral Bustami  · 技术社区  · 7 年前

    在模型中检索数组的值时遇到问题。所以我有一个模型,它有转发器字段。现在,我试图从另一个模型中访问该中继器字段的值。

    这就是我所做的。。

    已更新

    领域。yaml英寸 瓦塔达塔普罗菲尔 模型

    fields:
    visimisi:
        label: 'Visi Misi'
        ---
    jdwlibdh:
        label: 'Jadwal'
        oc.commentPosition: ''
        prompt: 'add'
        maxItems: '7'
        span: full
        type: repeater
        form:
            fields:
                jeniskeb:
                    label: 'Jenis'
                    ---
                jamibdh:
                    label: 'Jam'
                    ---
                kategori:
                    label: 'Kategori'
                    type: dropdown
                    options:
                        Umum/Raya: Umum/Raya
                        Komisi/Kategorial: Komisi/Kategorial
    

    型号名称 瓦塔达塔普罗菲尔

    class WartaDataProfil extends Model
    {
      use \October\Rain\Database\Traits\Validation;
    
      public $timestamps = false;
    
      public $rules = [
      ];   
      public $table = 'mismaiti_mywarta_profil';
    
      protected $jsonable = ['pdtjmt','jdwlibdh','komisi','bidang'];
    
      public $attachOne = [
    
          'logogereja' => 'System\Models\File',
          'logomywarta' => 'System\Models\File'
    
        ];
    }
    

    我想从上的“jeniskeb”字段检索数据 瓦塔达塔普罗菲尔 用于另一个模型(假设该模型为 瓦塔鲁丁 )作为其中一个字段上的下拉选项,所以我在 瓦塔鲁丁 模型

    领域。yaml开启 瓦塔鲁丁 模型

    tabs:
    fields:        
        tanggal:
            label: Tanggal            
            mode: date
            format: 'd - F - Y'
            span: storm
            cssClass: col-sm-4 col-sm-push-0
            type: datepicker
            tab: 'Minggu Ini'                            
        kebum:
            label: ''            
            prompt: 'Tambah Data'
            maxItems: '3'            
            type: repeater
            tab: 'Minggu Ini'
            form:
                fields:
                    jeniskeb:
                        label: 'Kebaktian'
                        ---
                        type: dropdown
                        options: jenisKeb
                    khotbah:
                        label: Pengkhotbah
                        ---
                        type: text
    

    这是 瓦塔鲁丁 模型 (更新为@HardikSatsiya解决方案)

    class WartaRutin extends Model
    {
      use \October\Rain\Database\Traits\Validation;
    
      use \October\Rain\Database\Traits\SoftDelete;
    
      protected $dates = ['deleted_at'];
      public $rules = [    ];    
      public $table = 'mismaiti_mywarta_rutin';
      protected $jsonable = ['temakebum','rankhot','kebum','kebkom','bngmbr'];
    
      public function jenisKeb(){
          $jdwlibdh = WartaDataProfil::pluck('jdwlibdh');
    
        $jenkebOptions= [''];
        foreach($jdwlibdh as $item)  {
    
            // json decoding 
            $decoded = json_decode($item, true);
    
            print(dd($decoded));
    
            // manually filtering
            if($decoded['kategori'] == 'Umum/Raya') {
                $jenkebOptions[$decoded['jeniskeb']] = $decoded['jeniskeb'];      
            }
        }
    
        return $jenkebOptions;
    }   
    

    @HardikSatasiya的解决方案返回错误

    未定义索引:kategori

    打印(dd($解码))结果

    array:7 [▼
      0 => array:3 [▼
      "jeniskeb" => "Kebaktian Umum 1"
      "jamibdh" => "07.00 WIB"
      "kategori" => "Umum/Raya"
      ]
      1 => array:3 [▼
      "jeniskeb" => "Kebaktian Umum 2"
      "jamibdh" => "09.00 WIB"
      "kategori" => "Umum/Raya"
      ]
      2 => array:3 [▼
      "jeniskeb" => "Kebaktian Umum 3"
      "jamibdh" => "18.00 WIB"
      "kategori" => "Umum/Raya"
      ]
      3 => array:3 [▼
      "jeniskeb" => "Kebaktian Pemuda"
      "jamibdh" => "09.30 WIB"
      "kategori" => "Komisi/Kategorial"
      ]
      4 => array:3 [▼
      "jeniskeb" => "Kebaktian Remaja"
      "jamibdh" => "09.30 WIB"
      "kategori" => "Komisi/Kategorial"
      ]
      5 => array:3 [▼
      "jeniskeb" => "Kebaktian Tunas Remaja"
      "jamibdh" => "09.30 WIB"
      "kategori" => "Komisi/Kategorial"
      ]
      6 => array:3 [▼
      "jeniskeb" => "Kebaktian Anak"
      "jamibdh" => "09.30 WIB"
      "kategori" => "Komisi/Kategorial"
      ]
    ] 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Hardik Satasiya    7 年前

    正常方法无法按您的数据工作 repeater 所以会是这样 JSON 在数据库中。

    需要放入的代码 WartaRutin 模型

    public function jenisKeb(){
    
        $jdwlibdh = WartaDataProfil::pluck('jdwlibdh');
    
        $jenkebOptions= [''];
        foreach($jdwlibdh as $item)  {
    
            // json decoding 
            $decoded = json_decode($item, true);
            foreach($decoded as $innerItem)  {
    
                // manually filtering
                if($innerItem['kategori'] == 'Umum/Raya') {
                    $jenkebOptions[$innerItem['jeniskeb']] = $innerItem['jeniskeb'];      
                }
            }
        }
    
        return $jenkebOptions;
    }
    

    这应该可以让我知道它是否有效。