#php #sql #laravel #laravel-4
#php #sql #laravel #laravel-4
Вопрос:
Мне было интересно, можете ли вы просмотреть 3 sql-запроса, за которыми следуют преобразованные запросы JOIN, которые не работают. Я продолжаю получать неопределенную ошибку индекса — не уверен, что я делаю неправильно.
Пожалуйста, обратите внимание, что $db_table_prefix = app_ Ничего страшного.
$db-> sql_escape = mysql_real_escape_string (удалено, потому что laravel выполняет собственное экранирование) 1: СТАРЫЙ:
$sql = "SELECT ".$db_table_prefix."Users.Group_ID,
".$db_table_prefix."Groups.*
FROM ".$db_table_prefix."Users
INNER JOIN ".$db_table_prefix."Groups ON ".$db_table_prefix."Users.Group_ID = ".$db_table_prefix."Groups.Group_ID
WHERE
User_ID = '".$db->sql_escape($this->user_id)."'";
НОВОЕ:
return (array)DB::table('app_Users')
->select('app_Users.Group_ID')
->join('app_Groups', 'app_Users.Group_ID', '=', 'app_Groups.Group_ID')
->where('User_ID', '=', $this->user_id)
->first();
2:
Старый:
$sql = "SELECT ".$db_table_prefix."Users.Group_ID,
".$db_table_prefix."Groups.* FROM ".$db_table_prefix."Users
INNER JOIN ".$db_table_prefix."Groups ON ".$db_table_prefix."Users.Group_ID = ".$db_table_prefix."Groups.Group_ID
WHERE User_ID = '".$db->sql_escape($this->user_id)."'
AND
".$db_table_prefix."Users.Group_ID = '".$db->sql_escape($db->sql_escape($id))."'
LIMIT 1
";
Новое:
return (bool)DB::table('app_Users')
->select('app_Users.Group_ID')
->join('app_Groups', 'app_Users.Group_ID', '=', 'app_Groups.Group_ID')
->where('User_ID', '=', $this->user_id)
->where('app_Users.Group_ID', '=', $id)
->first();
3.
Старый:
$sql = "SELECT ".$db_table_prefix."Users.Group_ID,
".$db_table_prefix."Groups.*
FROM ".$db_table_prefix."Users
INNER JOIN ".$db_table_prefix."Groups ON ".$db_table_prefix."Users.Group_ID = ".$db_table_prefix."Groups.Group_ID
WHERE
User_ID = '".$db->sql_escape($userId)."'";
Новое:
return (array) DB::table('app_Users')
->select('app_Users.Group_ID')
->join('app_Groups', 'app_Users.Group_ID', '=', 'app_Groups.Group_ID')
->where('User_ID', '=', $userId)
->first();
Спасибо!
Комментарии:
1. Я полагаю, вы получаете неопределенный индекс из какого-то другого кода, который использует возвраты из 3 запросов, которые вы публикуете здесь. Можете ли вы опубликовать этот код, который также обрабатывает возвращаемые значения? Похоже, вы пытаетесь получить доступ к возвращенным данным неправильным способом, а не к самим запросам.
2. Я использовал запросы в классе и вызывал их с помощью $functionvar[‘Group_Name’] . Он должен работать, потому что он возвращает массив.
3. Но структура массива может отличаться от ожидаемой. Попробуйте var_dump, чтобы проверить, соответствует ли возвращаемый массив тому, что вы ожидали?