PDA

View Full Version : تغییر اندیس آرایه هنگام کوئری



desatir7316
شنبه 08 آذر 1393, 21:01 عصر
سلام دوستان
من این کوئری رو دارم:


$query = new Query;
$query->select('*')->from('item')->where("id IN ($items_id)");
$result = $query->all();

تو حالت پیش فرض اندیس های آرایه اعداد صفر و یک و ... هستن
می تونه طوری باشه که اندیس ها id های توی تیبل item باشن؟

MMSHFE
شنبه 08 آذر 1393, 22:16 عصر
فکر نمیکنم بشه و هر خونه آرایه است و اندیس id هر خونه فیلد موردنظر شماست.

desatir7316
شنبه 08 آذر 1393, 22:36 عصر
ممنون
گفتم شاید شاید تابعی چیزی برای این کار موجود باشه که بشه اندیس های آرایه رو تغییر داد و یه چیز دیگه قرار داد
یعنی نیست همچین آپشنی؟

rezaonline.net
یک شنبه 09 آذر 1393, 08:58 صبح
ممنون
گفتم شاید شاید تابعی چیزی برای این کار موجود باشه که بشه اندیس های آرایه رو تغییر داد و یه چیز دیگه قرار داد
یعنی نیست همچین آپشنی؟
اصلا نیاز نیست همچین کاری :)

به چه دلیل به این امکان نیاز دارید؟

desatir7316
یک شنبه 09 آذر 1393, 11:27 صبح
مرد مومن بيكار كه نيستم، خوب حتما نياز دارم ديگه:بامزه:
اطلاعات يه آرايه ديگه رو مي خوام با اين آرايه اضافه كنم كه كليد مشتركشون همين id هست

MMSHFE
یک شنبه 09 آذر 1393, 12:27 عصر
بهتره خودتون دست به کار بشین.
1- این متد رو به مدلتون اضافه کنید:

public static function associativeArray($models) {
$users = [];
foreach($models as $model) {
$users[$model->id] = [
'name' => $model->name,
'username' => $model->username,
'password' => $password,
];
}
return $users;
}
من فرض کردم مدل Users هست. حالا کافیه توی برنامه اینطوری کار کنید:

$users = Users::associativeArray(Users::findAll());

desatir7316
یک شنبه 09 آذر 1393, 14:37 عصر
http://www.yiiframework.com/forum/index.php/topic/59958-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%A7%D9%86%D8%AF%DB%8C%D8%B3-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D9%87%D9%86%DA%AF%D8%A7%D9%85-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C/page__pid__268177#entry268177

MMSHFE
یک شنبه 09 آذر 1393, 15:06 عصر
راهکار Yii 1.1 :

// Path: protected/components/Tools.php
class Tools
{
public static function MakeAssoc($models) {
$result = array();
foreach($models as $model) {
$keys = array_keys($model->attributeLabels());
$pk = array_shift($keys);
$row = array();
foreach($keys as $key) {
$row[$key] = $model->{$key};
}
$result[$pk] = $row;
}
return $result;
}
}


// usage:
$users = Tools::MakeAssoc(Users::model()->findAll('confirmed=1'));
واسه 2 معادلسازی کنید :چشمک:

desatir7316
شنبه 29 آذر 1393, 21:52 عصر
$query = new Query();
$query->select('*')->from('item')->indexBy('id');
$query = $query->all();