Magento 1 এসকিউএল কোয়েরি


10

আমি আমার সংস্থার জন্য কিছু রিপোর্টিং কার্যকারিতা স্থাপনের প্রক্রিয়াধীন, আমি গুগল, মোজ এবং আমাদের কুরিয়ারের মতো তথ্য সংগ্রহ করি। প্রতিবেদনের অংশ হিসাবে আমি ম্যাজেন্টো থেকে ডেটাও পেতে চাই। এটি আমাদের সার্ভারে একটি খুব সুরক্ষিত ফোল্ডারে হোস্ট করা হবে। আমি যা জানতে চাই তা হল আমার পক্ষে ম্যাজেন্টো ডেটাতে ক্যুরি চালানোর নিরাপদতম উপায় কী?

আমি দৌড়াতে পারি

  • ম্যাজেন্টোর বাইরে সরাসরি এসকিউএল অনুসন্ধান করে

  • এসকিউএল Magento এর ভিতরে কোয়েরি করে তবে তারপরে স্বয়ংক্রিয়ভাবে সেগুলি ম্যাজেন্টো থেকে বের করে আনতে সমস্যা হবে

  • ম্যাজেন্টো এপিআই

আমার ওয়েবসাইটের জন্য সুরক্ষা এবং পারফরম্যান্স দৃষ্টিকোণ থেকে আমি কোনটি সবচেয়ে ভাল করছি?

উত্তর:


18

হ্যাঁ আপনি ম্যাজেন্টোর মধ্যে সরাসরি স্ক্যাল ক্যোয়ারী চালাতে পারেন, এটি করার সর্বোত্তম উপায় হ'ল পঠন লেখার সংস্থান ব্যবহার করা। আপনি এটির সাথে উত্তেজিত করতে পারেন:

    $ রিসোর্স = ম্যাজ :: গেটসিংটন ('কোর / রিসোর্স');

    $ রিড সংযোগ = $ রিসোর্স-> getConnection ('কোর_ড্রেড');

    $ writeConnication = $ উত্স-> getConnection ('কোর_রাইট');

একটি নির্বাচন চালানোর জন্য আপনি এই জাতীয় কিছু করতে পারেন:

    $ রিড সংযোগ = $ রিসোর্স-> getConnection ('কোর_ড্রেড');

    $ প্রশ্ন = 'নির্বাচন করুন' থেকে '। $ Resource-> getTableName ( 'ক্যাটালগ / পণ্য');

    $ ফলাফল = $ রিড সংযোগ-> ফেচআল ($ কোয়েরি);

    / * ফলাফল পান * /
    , var_dump ($ ফলাফল);

ডাটাবেস ব্যবহার করে কিছু লিখতে:

    $ রিসোর্স = ম্যাজ :: গেটসিংটন ('কোর / রিসোর্স');

    $ writeConnication = $ উত্স-> getConnection ('কোর_রাইট');

    $ টেবিল = $ উত্স-> getTableName ('ক্যাটালগ / পণ্য');

    $ ক্যোয়ারী = "আপডেট {$ টেবিল} SET {আইটেম} = '{মান}' WHERE সত্তা_আইডি = 'মান'";

    $ WriteConnection-> QUERY ($ ক্যোয়ারী);

আশা করি এটি আপনার জন্য সহায়তা করবে।


ধন্যবাদ @ কে আপনি কি জানেন যে আমার কী পরিণতি হবে ম্যাজেন্টোর বাইরে ডিবি জিজ্ঞাসা করা?
উইল রাইট

এটি খুব ভাল নয়, এটি কেবল সেরা অনুশীলন নয়। এবং আপনি অসঙ্গতিগুলির ঝুঁকি নিতে পারেন তবে সাধারণত কোনও সমস্যা হয় না। তবে এখন আপনি এটি সমস্তই একটি কার্যপ্রবাহে শক্ত করে রেখেছেন
কে এন্ট ভীন

এই সমস্ত কোয়েরি কোথায় পাবেন?
পার্থো

3
দয়া করে মনে রাখবেন যে এইভাবে ডাটাবেসে লেখার ফলে একটি এসকিউএল ইনজেকশন দুর্বলতার পরিচয় হয় । আপনি যদি নিশ্চিত হন যে আপনার মানগুলি নিরাপদ।
bassplayer7

18

এসকিউএল ইনজেকশনগুলি এড়াতে এটি করার আরও একটি সঠিক উপায় রয়েছে।

$resource = Mage::getSingleton('core/resource');
$write = $resource->getConnection('core_write');
$table = $resource->getTableName('your/model');

আপনি তৈরি করতে পারেন:

$write->insert(
    $table, 
    ['column_1' => 1, 'column_2' => 2]
);

পড়ুন:

$select = $write->select()
    ->from(['tbl' => $table], ['entity_id', 'company'])
    ->join(['tbl2' => $table2], 'tbl.entity_id = tbl2.product_id', ['stuff'])
    ->where('name LIKE ?', "%{$name}%")
    ->group('company');
$results = $write->fetchAll($select);

হালনাগাদ:

$write->update(
    $table,
    ['column_1' => 3, 'column_2' => 4],
    ['entity_id = ?' => 123]
);

মুছে ফেলা:

$write->delete(
    $table,
    ['entity_id IN (?)' => [123, 456]]
);

একাধিক sertোকান:

$rows = [
    ['col_1'=>'value1', 'col_2'=>'value2', 'col_3'=>'value3'],
    ['col_1'=>'value3', 'col_2'=>'value4', 'col_3'=>'value5'],
];
$write->insertMultiple($table, $rows);

সদৃশ অনুলিপি প্রবেশ করান:

$data = [];
$data[] = [
    'sku' => $sku,
    'name' => $name
];
$write->insertOnDuplicate(
    $table,
    $data, // Could also be an array of rows like insertMultiple
    ['name'] // this is the fields that will be updated in case of duplication
);

2
খুশী হলাম। আমাকে ম্যাজেন্টোতে ডেটাবেস কোয়েরি যুক্তি শিখিয়েছে।
আনস

1
বাহ, আমি আশা করি আমি জানতাম যে এটি সম্ভব হয়েছিল যখন আমি যখন বছর আগে ম্যাজেন্টোতে কাজ শুরু করেছি। দুর্দান্ত ব্যাখ্যা!
এরিক সিস্ট্র্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.