[英]GroceryCrud set a n-n relation with where clause
我有三個表(簡化),它們是:
我必須為每個用戶顯示所有房屋。
在我的控制器中,我有一個這樣的功能:
public function create_houses_table($usr_id)
{
$crud = new grocery_CRUD();
$crud->set_language("italian");
$crud->set_theme('datatables');
$crud->set_subject('Casette');
$crud->set_table('tbl_houses');
$crud->set_relation_n_n('Casette',
'tbl_users_houses',
'tbl_users',
'house_id',
'user_id',
'usr_name',
NULL,
array('user_id' => $usr_id));
...
}
我得到的是:
每次我從組合中選擇一個用戶時,我都需要刷新我對 usr_id 的列表過濾...但我總是得到所有的房子。
我錯了什么?
這不是 set_relation_n_n 的預期用途(它將在用戶行內的一個字段中顯示所有用戶房屋)。
您想要的可以更好地從 tbl_users_houses 列表中完成,通過客戶端使用 $crud->where() 進行過濾,並通過兩個簡單的關系與其他表鏈接。
如果我理解正確,您正在嘗試僅獲取登錄用戶的記錄...並且您每個房子都有多個用戶,因此是 nn 關系。
我也遇到了這個問題,這就是我所做的。
$myprojects = $this->admin_model->get_employee_projects($this->user_id);
$myprojectids = array_column($myprojects, 'id');
//get only one column from the multi-dimensional array
$crud->where("`projects`.id IN", "(" . implode(",", $myprojectids) . ")", false);
// the false disables escaping
$crud->set_relation_n_n('assigned_employees', 'project_employees', 'employees', 'project', 'employee', 'name');
//Only so it also still shows the name of Users assigned
所以基本上這里的projects
就像房子一樣,我使用WHERE IN
子句根據我從模型方法獲得的項目過濾記錄......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.