запросы laravel sql не работают после преобразования из обычного sql

#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, чтобы проверить, соответствует ли возвращаемый массив тому, что вы ожидали?