помогите вставить данные из таблицы базы MySQL в массив с данными других таблиц

J2
На сайте с 13.12.2011
Offline
46
876

Здравствуйте. Люди добрые помогите с решением проблемы пожалуйста.

Есть файл model/goods.model.php

в нем содержатся функции для извлечения данных из базы. В нем есть такая функция

	public function getGoods($param,$page = '',$field='*',$type = 'simple',$extend = null) {

$condition_str = $this->getCondition($param);
$array = array();
$array['field'] = $field;
switch ($type){
case 'groupbuy_goods_info':
$array['table'] = 'goods,goods_spec';
$array['join_type'] = empty($param['join_type'])?'LEFT JOIN':$param['join_type'];
$array['join_on'] = array(
'goods.goods_id=goods_spec.goods_id'
);
break;
case 'store':
$array['table'] = 'goods,store';
$array['join_type'] = 'INNER JOIN';
$array['join_on'] = array(
'goods.store_id=store.store_id'
);
if (is_array($extend)){
$array = array_merge($array,$extend);
}
break;


//Я подключаю таблицу evaluate_goods в эту функцию. И заношу ее в массив.

case 'evaluate_goods':
$array['table'] = 'goods,evaluate_goods';
$array['join_type'] = 'INNER JOIN';
$array['join_on'] = array(
'goods.goods_id=evaluate_goods.geval_goodsid' // geval_goodsid это колонка в таблице
);
if (is_array($extend)){
$array = array_merge($array,$extend);
}
break;





case 'goods':
$array['table'] = 'goods';
if (is_array($extend)){
$array = array_merge($array,$extend);
}
break;
case 'goods_spec':
$array['table'] = 'goods_spec';
break;
case 'brand':
$array['table'] = 'goods,brand,goods_class';
$array['field'] = '*';
$array['join_type'] = 'LEFT JOIN';
$array['join_on'] = array(
'goods.brand_id=brand.brand_id',
'goods.gc_id=goods_class.gc_id'
);
break;
case 'stc':
$array['table'] = 'goods,store_class_goods';
$array['field'] = $field=='*' ? 'DISTINCT goods.*' : 'DISTINCT '.$field;
$array['count'] = 'count(DISTINCT goods.goods_id)';
$array['join_type'] = 'LEFT JOIN';
$array['join_on'] = array(
'goods.goods_id=store_class_goods.goods_id'
);
break;
default:
$array['table'] = 'goods,goods_spec';
$array['join_type'] = empty($param['join_type'])?'LEFT JOIN':$param['join_type'];
$array['join_on'] = array(
'goods.spec_id=goods_spec.spec_id'
);
}
$array['where'] = $condition_str;
$array['order'] = $param['order'] ? $param['order'] : 'goods.goods_id desc';
$array['limit'] = $param['limit'];
$goods_array = Db::select($array,$page);
return $goods_array;
}

Есть еще другой файл control/search.php в котором данные обрабатываются и передаются в шаблон.

//Список товаров

$fieldstr = " goods.goods_id,goods.goods_name,goods.gc_id,goods.gc_name,goods.store_id,goods.goods_image,goods.goods_store_price,
goods.goods_click,goods.goods_state,goods.goods_commend,goods.commentnum,goods.salenum,goods.goods_goldnum,goods.goods_isztc,
goods.goods_ztcstartdate,goods.goods_ztclastdate,goods.group_flag,goods.group_price,goods.xianshi_flag,goods.xianshi_discount,
goods.city_id,goods.province_id,goods.kd_price,goods.py_price,goods.es_price,
store.store_name,store.grade_id,store.store_domain,store.store_credit,store.praise_rate,store.store_desccredit,store.store_ww



//когда я здесь прописываю колонку из таблицы 'evaluate_goods' например:



,evaluate_goods.geval_goodsid




//то выдает ошибку что нет данных по этой колонке

";
$goods_list = $model_goods->getGoods(array(
'goods_id_in'=>$data['goods_id_str'],
'price'=>$price_interval,
'group_flag'=>$group_flag,
'xianshi_flag'=>$xianshi_flag,
'keyword'=>$search_key,
'province_id'=>(is_numeric($_GET['area_id']) && $_GET['area_id'] > 0) ? $_GET['area_id'] : '',
'goods_show'=>'1',
'goods_form'=>$goods_form,
'order'=>$order,
),$page,$fieldstr,'store',




//если здесь вместо 'store' ставлю 'evaluate_goods' и удаляю из $fieldstr все данные связанные со //'store' то все работает и данные из таблицы 'evaluate_goods' заносятся в массив, но нет данных из //таблицы 'store'



$extend);
Tpl::output('goods_list',$goods_list);
Tpl::output('show_page',$page->show());

Мне нужно внести в массив данные таблицы 'evaluate_goods' так же как внесена таблица 'store'. Помогите пожалуйста не могу разобраться.

https://mallinru.ru/ (https://mallinru.ru/)
J2
На сайте с 13.12.2011
Offline
46
#1

Что на форуме нет добрых людей кто мог бы хотя бы подсказать? Помогите новичку а то два дня уже мучаюсь.

siv1987
На сайте с 02.04.2009
Offline
427
#2

Что значит внести в массив, в какой массив? Что за таблица, каким она тут боком?

Если связанная таблица - добавьте еще один джоин

J2
На сайте с 13.12.2011
Offline
46
#3

Здравствуйте. Там в коде комментарии написаны.

J2
На сайте с 13.12.2011
Offline
46
#4
siv1987:
добавьте еще один джоин

Посмотрите пожалуйста комментарии в коде.

siv1987
На сайте с 02.04.2009
Offline
427
#5
//то выдает ошибку что нет данных по этой колонке

Естественно нет, потому что там отрабатывает другой case, разве не видно?

$page,$fieldstr,'store',

//если здесь вместо 'store' ставлю 'evaluate_goods' и удаляю из $fieldstr все данные связанные со //'store' то все работает и данные из таблицы 'evaluate_goods' заносятся в массив, но нет данных из //таблицы 'store'

Не будет, потому что это другой запрос.

В case store


$array['table'] = 'goods,store,evaluate_goods';
$array['join_type'] = 'INNER JOIN';
$array['join_on'] = array(
'goods.store_id=store.store_id',
'goods.goods_id=evaluate_goods.geval_goodsid'
);
J2
На сайте с 13.12.2011
Offline
46
#6

А каким макаром теперь тут прописать все равно ошибку выдает.


//Список товаров
$fieldstr = " goods.goods_id,goods.goods_name,goods.gc_id,goods.gc_name,goods.store_id,goods.goods_image,goods.goods_store_price,
goods.goods_click,goods.goods_state,goods.goods_commend,goods.commentnum,goods.salenum,goods.goods_goldnum,goods.goods_isztc,
goods.goods_ztcstartdate,goods.goods_ztclastdate,goods.group_flag,goods.group_price,goods.xianshi_flag,goods.xianshi_discount,
goods.city_id,goods.province_id,goods.kd_price,goods.py_price,goods.es_price,
store.store_name,store.grade_id,store.store_domain,store.store_credit,store.praise_rate,store.store_desccredit,store.store_ww



//когда я здесь прописываю колонку из таблицы 'evaluate_goods' например:



,evaluate_goods.geval_goodsid




//то выдает ошибку что нет данных по этой колонке

";
$goods_list = $model_goods->getGoods(array(
'goods_id_in'=>$data***91;'goods_id_str'***93;,
'price'=>$price_interval,
'group_flag'=>$group_flag,
'xianshi_flag'=>$xianshi_flag,
'keyword'=>$search_key,
'province_id'=>(is_numeric($_GET***91;'area_id'***93;) && $_GET***91;'area_id'***93; > 0) ? $_GET***91;'area_id'***93; : '',
'goods_show'=>'1',
'goods_form'=>$goods_form,
'order'=>$order,
),$page,$fieldstr,'store',




//если здесь вместо 'store' ставлю 'evaluate_goods' и удаляю из $fieldstr все данные связанные со //'store' то все работает и данные из таблицы 'evaluate_goods' заносятся в массив, но нет данных из //таблицы 'store'



$extend);
Tpl::output('goods_list',$goods_list);
Tpl::output('show_page',$page->show());
siv1987
На сайте с 02.04.2009
Offline
427
#7

store оставляете как есть

а $fieldstr добавляете ваши поля из таблицы evaluate_goods.

Показываем ошибку и проблемный sql запрос. Как вывести запрос, если его нету с ошибкой ищите сами.

J2
На сайте с 13.12.2011
Offline
46
#8

Большое вам спасибо добрый человек. Без Вас вы бы так и не получилось. Уже третий день на одном месте топчусь. Я прописывал evaluate_goods.geval_goodsid, а надо было просто geval_goodsid.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий