Я пытаюсь сократить все свои методы в своей модели, поэтому я решил сделать ее динамичной. Закончено в создании динамического элемента для вставки, обновления, извлечения, удаления, но возникла проблема при создании динамического элемента для объединения двух таблиц.
Обнаружена ошибка:
«Слишком мало аргументов для функции CI_DB_query_builder :: join (), 1 передано
в C: \ xampp \ htdocs \ snapmatic \ application \ models \ Crud_model.php на линии
130 и минимум 2 ожидаемых
ПРИМЕЧАНИЕ. В этом проекте модуль, за которым я работаю, «следует», где пользователь может следовать за конкретным человеком (например, instagram). У меня есть 2 таблицы с именем: пользователи и следующие.
В моей «следующей таблице» мои столбцы: id, user_id и user_following. User_id — это то место, где вы вошли в аккаунт, а user_following — тот, за которым вы следили.
Scenario: In my table users, you have 2 data: Person 1 and Person 2
Person 1 account is logged in then Person 1 followed Person 2.
После того, как человек 1 нажал кнопку «следовать», в моей таблице следующее будет выглядеть так:
id: 1 user_id: 1 user_follow:2
Это мой контроллер
$id = $this->session->user_id;
$where = array('following.user_id => $id');
$join = array('following,following.user_following = users.id');
$fetch_following = $this->Crud_model->join_table('*','users',$where,$join);
//Also tried these
//$where = "('following.user_id', $id)";
//$where = "'following.user_id', $id)";
//$where = "('following.user_id, $id')";
//$where = "'following.user_id, $id'";
//$join = "'following,following.user_following = users.id'";
//$join = "('following,following.user_following = users.id')";
//$join = "('following','following.user_following' = 'users.id')";
модель
public function join_table($tag,$table,$where,$join){
// public function join_table($id){
$this->db->select($tag);
$this->db->from($table);
$this->db->join($join);
$this->db->where($where);
// $this->db->select('*');
// $this->db->from('users');
// // $this->db->group_by('invoice_number');
// $this->db->join('following','following.user_following = users.id');
// $this->db->where('following.user_id', $id);
$result = $this->db->get();
return $result->result();
}
Часть комментариев работает, но я хотел бы сделать ее динамичной.
Вопрос: Как сделать динамический метод для соединения таблицы?
Надеюсь, что это поможет вам :
держать join table
а также on
состояние на две разные переменные и $where
должен быть массив с парой ключ-значение, например:
Ваш контроллер должен быть таким:
$id = $this->session->user_id;
$where = array('following.user_id' => $id);
$join_table = 'following';
$join_on = 'following.user_following = users.id';
$fetch_following = $this->join_table('*','users',$where,$join_table,$join_on);
Ваш join_table
метод должен быть таким:
public function join_table($tag,$table,$where,$join_table,$join_on)
{
$this->db->select($tag);
$this->db->from($table);
$this->db->join($join_table,$join_on);
$this->db->where($where);
$query = $this->db->get();
return $query->result();
}
Для большего : https://www.codeigniter.com/user_guide/database/query_builder.html
Других решений пока нет …