私はPrestashop 1.7.1.2を使用しています。 ObjectModelを拡張するクラスを作成したいが、整数ではなく、主Id型のstringを持つ必要がある。 これを実現するには、ORMのload()関数をオーバーライドする必要がありますか?事前文字列をIDタイプとして使用してObjectModelを拡張します
0
A
答えて
0
で
おかげで、これまでのところ、誰もあなたを助けていません。私はあなたと一緒に考えようとします。私はprestashop開発の専門家ではありません。しかし、さらにあなたを得ることを望みます。
これは私のObjectModelを作成した方法です。あなたのプライマリIDはphpmyadminテーブルの文字列として設定されていますか?
/**
* @see ObjectModel::$properties
*/
public $id_product;
public $serial_key;
/**
* @see ObjectModel::$definition
*/
public static $definition = array(
'table' => 'avanto_keys',
'primary' => 'id_avanto_keys',
'multilang' => FALSE,
'fields' => array(
'id_product' => array('type' => self::TYPE_ID),
'serial_key' => array('type' => self::TYPE_STRING),
),
);
0
もちろん、私はどのように忘れましたか?私はprestashopの製品idを主キーとして、xref idをインデックス付きの列として保持しました。 xref Idを使用してインスタンス化する必要があるときは、直接Dbクエリを実行してからオブジェクトを水和させます。これは、xref idまたはprimary idのインスタンス化のいずれかを選択するように改善することもできます。
class ProductXrefMap extends ObjectModel {
public $id_xref; //guid from mssql
public $date;
public $force_id = true;
public static $definition = array(
'table' => 'product_xref_table',
'primary' => 'id_product', //prestashop's product id
'fields' => array(
'id_xref' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true, 'size' => 64),
'date' => array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'required' => true)
)
);
public function __construct ($id_xref=null)
{
parent::__construct();
if ($id_xref)
{
$sql_select = "SELECT * FROM " . _DB_PREFIX_ . "product_xref_table WHERE id_xref = '" . $id_xref . "'";
if ($row = Db::getInstance()->getRow($sql_select))
$this->hydrate($row);
}
}
}
関連する問題
- 1. 角型2のカスタムメソッドを使用してタイプ文字を拡張する
- 2. 拡張子内で文字列として列挙型を使用する
- 3. タイプ-Wwrite-文字列を使用して
- 4. パラメータ拡張を使用してBashを使用して文字列の先頭桁を削除します。
- 5. Cython拡張タイプのPython文字列
- 6. findViewByIdを文字列でIDとして使用したい
- 7. 拡張メソッドを使用して文字列インスタンス変数を変更する
- 8. ESC文字を使用してGSM 03.38拡張文字セットにアクセスする
- 9. タイプ文字列のすべての拡張メソッド
- 10. イメージストリームを使用して拡張タイプを決定する
- 11. DataTables YajraBox Eloquentクエリ文字列フィルタリングを使用したLaravel拡張
- 12. 文字列の '\'文字を文字列として使用
- 13. 文字列関数を使用してPL/SQLでワイルドカードを使用して文字列を拡張するには
- 14. Console.ReadKey()メソッドとConsoleKeyInfo変数を使用して、拡張ASCII文字を正しいプレゼンテーションに変換します。
- 15. 表は、長い文字列にすぎ拡張しており、
- 16. roslyn apiを使用してタイプの拡張メソッドをすべて取得する
- 17. シェルで区切り文字として文字列を使用して文字列を切ります
- 18. 配列の文字列値を文字列変数として使用して、json-codenameoneを解析します。
- 19. ajax経由で拡張文字を送信しようとしています
- 20. Python:文字列を変数として使用しますか?
- 21. 整数を文字列として使用しますか?
- 22. Java Generic?文字列を拡張します
- 23. 文字列に拡張機能を作成しますか?
- 24. iPadの不足しているOpenGLの拡張文字列GL_APPLE_texture_2D_limited_npot
- 25. フレックスボックスを使用してセクションを拡張したGoogleタイプの画像ギャラリーレイアウト
- 26. キーと値のタイプを指定してマップを拡張する
- 27. 文字の配列(Polybius Square)を使用して文字列を解読しようとしています
- 28. 拡張クラス内の拡張メソッド自体を使用して
- 29. 拡張機能を使用して
- 30. javascriptマップを使用して配列を拡張する
ありがとうございます。はい、それはvarchar(64)として設定されています(mssqlデータベースのGuidを持つクロスリファレンスフィールドなので)。したがって、そのクラスの新しいインスタンスを作成すると、IDフィールドはInt(この場合はid_avanto_keys)に変換/解析されます。私は回避策を使用し、私はその作業を考える。 –
こんにちは。解決策を私たちと共有できますか?たぶん、いつかそれが必要になるでしょう。ありがとう! – vanhims