الحصول على البيانات من قاعدة البيانات باستخدام مصفوفة في yii

StackOverflow https://stackoverflow.com//questions/24060460

  •  26-12-2019
  •  | 
  •  

سؤال

أنا جديد على yii.مشكلتي هي أن لدي مجموعة $hometeamid الذي يحتوي على كل المعرف الذي أحتاجه لعرض التفاصيل.كيف يمكنني الحصول على البيانات.بلز شخص يساعدني
لقد حاولت
$mod = Yii::app()->db->createCommand('SELECT * FROM event WHERE id = 1432201 or id = 1432208')->queryAll();

 $no=1432201;
 $mod = Event::model()->findByAttributes(array('id' => $no));<br>

ولكن لا يعمل.تظهر الحقول الفارغة.

هل كانت مفيدة؟

المحلول

من الأفضل القيام بـ addInCriteria باستخدام CDbCriteria أو إنشاء أمر بسيط مثل، ولكن قبل القيام بذلك، يرجى التحقق من استعلامك على phpmyadmin/navicate/mysql Workbench وما إلى ذلك.يدويًا (هل تُرجع النتيجة أم لا؟)

$homeTeamIds=['1','2','3','4'];
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$homeTeamIds,'OR'); //matching any of your homeTeadIds 
$result = Event::model()->findAll($criteria);

أو

$ids = implode(', ', $homeTeamIds);
$sql = "SELECT * FROM event WHERE id IN ($ids)"   // like where id IN(1,2,3,4)
$result = Yii::app()->db->createCommand($sql)->queryAll();

نصائح أخرى

لا تستخدم findByAttributes إذا قمت بتعيين المعرف كمفتاح أساسي في قاعدة بياناتك.

مثال:

$mod = Event::model()->findbyPk($no);

يمكنك استخدام معايير CDbaddInCondition() طريقة للعثور على جميع الصفوف ذات القيم المطابقة للعناصر الموجودة في مصفوفة، على سبيل المثال يجب أن يعمل شيء مثل هذا (لم يتم اختباره):

$hometeamid = array(
    '1432201',
    '1432208',
    // ... etc... all the id's you want to show
);
$criteria = new CDbCriteria;
$criteria->addInCondition('id',$hometeamid,'OR');
$mod = Event::model()->findAll($criteria);

يوجد أيضًا مثال لاستخدام addInCondition أعلى الصفحة المرجعية لـ CDbCriteria: http://www.yiiframework.com/doc/api/1.1/CDbCriteria

قم أولاً بمعالجة المصفوفة الخاصة بك في سلسلة مفصولة بفواصل والتي يتم استخدامها كقيمة شرطية في استعلام SQL

$idString = implode(', ', $hometeamid);

ثم ضع تلك السلسلة في الداخل IN جملة في استعلام SQL.

$sql = "SELECT *
           FROM event
         WHERE id IN ($idString)"

$mod = Yii::app()->db->createCommand($sql)->queryAll();

بعد تنفيذ queryAll الطريقة سوف تتلقى الصفوف ذات الصلة كمصفوفة ناتجة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top