Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

работа с базой данных


Recommended Posts

Здравствуйте. нужно получить данные zone_id в модели:

 

public function getRegion($customer_id){

        $sql = $this->db->query("SELECT * FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$customer_id . "'");
        $sql_data = $sql->rows;
        $sql_val = $sql_data['zone_id'];

        return $sql_val;

    }

 

как сделать чтобы возвращало сразу zone_id?

Link to comment
Share on other sites


Если это поле есть в запросе то так примерно 

return $sql->row['zone_id'];

Только же у покупателя может быть несколько адресов, потому нужно или брать адрес который стоит по умолчанию, или в метод ещё передавать address_id

  • +1 1
Link to comment
Share on other sites

В 02.08.2022 в 01:48, AlexMax13 сказав:

Здравствуйте. нужно получить данные zone_id в модели:

 

public function getRegion($customer_id){

        $sql = $this->db->query("SELECT * FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$customer_id . "'");
        $sql_data = $sql->rows;
        $sql_val = $sql_data['zone_id'];

        return $sql_val;

    }

 

как сделать чтобы возвращало сразу zone_id?

public function getRegion($customer_id){

    $query = $this->db->query("SELECT zone_id FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$customer_id . "'");

	return $query->row['zone_id'];
}

 

  • +1 1
Link to comment
Share on other sites

спасибо, а как можно получить название региона в зависимости от zone_id который указан в таблице address? Потому что в таблице адресов указан только zone_id и я так понимаю что получить название региона можно только обращаясь к таблице address и оттуда брать zone_id а затем обращаться в таблицу zone и там сравнивать zone_id и из name брать уже готовое название.

 

Но как это сделать запросом по типу как написано выше? выше мы уже получаем из таблицы address нужный zone_id, затем его используем для еще одного запроса в таблицу zone где ищем нужный zone_id и оттуда забираем содержимое колонки name.

 

Можно ли это сделать одним запросом чтобы не обращаться 2 раза в бд?

Link to comment
Share on other sites


В 02.08.2022 в 14:38, chukcha сказав:

left join  region on (adress.zone_id = region.zone_id)

 

спасибо, но не совсем понимаю как реализовать то что вы написали.

 

Сделал так и работает:

public function getRegion($customer_id){

    $query = $this->db->query("SELECT zone_id FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$customer_id . "'");
    $zone_id = $query->row['zone_id'];
    $region = $this->db->query("SELECT name FROM " . DB_PREFIX . "zone WHERE zone_id = '" . (int)$zone_id . "'");


	return $region->row['name'];
	}

 

 

Link to comment
Share on other sites


В 02.08.2022 в 21:33, chukcha сказав:

SELECT z.name  FROM " . DB_PREFIX . "address a WHERE customer_id = '" . (int)$customer_id . "'

LEFT JOIN  " . DB_PREFIX . "zone z WHERE z.zone_id = a.zone_id ;

 

спасибо большое))))

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.