Удалить запись, если она не имеет дочерней записи, связанной с ней в codeigniter - PullRequest
0 голосов
/ 08 января 2019

У меня есть магазинный стол и таблица предметов, ребята. Поэтому я хочу удалить магазин из таблицы магазинов. Магазин должен быть удален, если у него нет товара, и не может быть удален, если у него есть товар. Код, написанный здесь, не удаляет магазин, есть ли товар или нет. Это мой контроллер:

public function deleteShop()
    {
        if ( ! $this->ion_auth->logged_in() OR ! $this->ion_auth->is_admin())
        {
            redirect('auth/login', 'refresh');
        }
        else
        {    
            $id = 0;        
            $shop_id = $_GET['shop_id']; 
            $results = $this->shop_model->getShopIdFromItem($shop_id);


            if($results) {
                    foreach ($results as $key) {
                        $id = $key->shop_id;
                    }
                    if($id == $shop_id) {
                        $this->session->set_flashdata('message', 'There is an item with this Shop. You cannot delete this!');
                        redirect(base_url() . 'admin/shop','refresh');
                    }
                } else {
                    $result = true;
                    if($result) {
                        redirect(base_url() . 'admin/shop', 'refresh');
                    } else {
                        echo "Something went wrong!";
                    }
                }
        }

Это моя модель:

function getShopIdFromItem($shop_id) {
        $this->db->select('category_id');
        $this->db->from('item');
        $this->db->where('shop_id', $shop_id);
        $query = $this->db->get();
        if($query->num_rows() > 0) {
            return $query->result();
        } else {
            return false;
        }
    }

    function delete($shop_id)
    {
        $this->db->where('shop_id', $shop_id);
        $this->db->delete('shop'); 
        return $this->db->affected_rows();
    }

1 Ответ

0 голосов
/ 08 января 2019
function delete($shop_id)
{
$this->db->from('item');
$this->db->where('shop_id', $shop_id);
$query = $this->db->get();
if($query->num_rows() == 0) {
    $this->db->where('shop_id', $shop_id);
    $this->db->delete('shop'); 
    return $this->db->affected_rows();
} else {
    return false;
}

измените ваш метод удаления ... он будет удален только в том случае, если у него нет доступных элементов ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...