0

私は10月から始まります。プラグインを作成しようとしていますので、noobの質問はしていますが、ネットで検索するときには、ドキュメンテーションは各ユニットとして良いですが、 "ドットを接続する" IMHOが欠けています... SimpleTree(正しい方法ではないかもしれません)を使ってidに関連する関連する名前を表示する方法を考え出しました。OctoberCMS - ドロップダウン:ドロップダウンで選択した名前でIDを保存

https://www.screencast.com/t/WDYkfPdMQhttps://www.screencast.com/t/4NDc3HHDs

frmArea.yaml

fields: 
id: 
    label: Número 
    oc.commentPosition: '' 
    span: auto 
    disabled: 1 
    type: number 
area_id: 
    label: 'Parente de' 
    oc.commentPosition: '' 
    emptyOption: 'Sem valor' 
    span: auto 
    type: dropdown 
    nameFrom: area 
area: 
    label: Área 
    span: full 
    oc.commentPosition: '' 
    type: text 

Area.php

<?php namespace JML\Gkb\Models; 

use Model; 

    /** 
* Model 
*/ 
class Area extends Model 


{ 
use \October\Rain\Database\Traits\Validation; 
use \October\Rain\Database\Traits\SimpleTree; 

/* 
* Disable timestamps by default. 
* Remove this line if timestamps are defined in the database table. 
*/ 
public $timestamps = false; 


/* 
* Validation 
*/ 
public $rules = [ 
]; 

/** 
* @var string The database table used by the model. 
*/ 
public $table = 'jml_gkb_areas'; 

//Relações 

public $hasMany = [ 
    'area_id' => 'JML\Gkb\Models\Area' 
]; 

/* 
public $belongsTo = [ 
    'area_id' => 'JML\Gkb\Models\Area' 
]; */ 

public function getAreaIdOptions(){ 
    return Area::all()->listsNested('area', 'id'); 
} 


} 

私は親へのリレーションを選択せず​​にレコードを作成する場合は、それらが作成されます(上のものイメージなど)。私は親を選択して作成しようとすると永遠に保存されます...私は親を選択せず​​にレコードを更新しようとすると、同じときに保存時に発生します。

いくつかの時間中、または少なくとも私がキャッシュをクリアすると、ロックがタイムアウトした後にロックタイムアウトを返すことなくレコードを作成できます...もう、300秒後にタイムアウトが発生しました...どのようなものがdbを鳴らしているのかを増やしています...私は、クエリが必要な文字列を送信していると思われますが、それを達成する方法はわかりません...

誰かがいくつかの関連する例やスニペットを見つけるか、どのように???リストウィジェットと同じ結果を得ることは可能ですか?解決

TIA

JL

答えて

0

まあ、... ちょうどそれがどのように機能するかを理解するためにSimpleTreeトレイトコードを掘り... すごいシンプルな...

<?php namespace JML\Gkb\Models; 

使用モデル;

/** 
* Model 
*/ 
class Area extends Model 
{ 
use \October\Rain\Database\Traits\Validation; 
use \October\Rain\Database\Traits\SimpleTree; 

/* 
* Disable timestamps by default. 
* Remove this line if timestamps are defined in the database table. 
*/ 
public $timestamps = false; 
const PARENT_ID = 'area_id'; 


/* 
* Validation 
*/ 
public $rules = [ 
]; 

/** 
* @var string The database table used by the model. 
*/ 
public $table = 'jml_gkb_areas'; 

//Relações 

public function getAreaIdOptions(){ 

    return Area::all()->listsNested('area', 'id'); 

} 


} 

ちょうど関係を削除し、それがIDと関係を持っている列であるよう

const PARENT_ID = 'area_id'; 

を追加する必要があります。

ビルダーのリストウィジェットの説明で誰かが「area_id」の変更方法を知っていれば、お気軽にコメントしてください。

TIA

関連する問題