Это мой код, но он выводит только последнего вставленного пользователя. Я имею в виду, что на нем не отображаются другие пользователи, зарегистрированные для определенного бизнеса. Пользователь должен видеть только тех пользователей, которые зарегистрированы в его компании. заранее спасибо
я использую yii2
продвинутый.
У меня 3 стола
Третья таблица — Business_tbl (business.id, business.name)
public function search($params)
{
//current user logedin
$CurrentUserID = Yii::$app->user->getId();
//Find business to which current user is registered
$BusinessID = Yii::$app->mycomponent->getBusinessID($CurrentUserID);
//Now find all the users with this business id
$BusinessUsers= Yii::$app->mycomponent->getBusinessUsersID($BusinessID);
foreach ($BusinessUsers as $BusinessUser)
{
$UID=$BusinessUser['user_id'];
}
$query = User:: find()->where(['id'=>$UID]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_ASC]],
'pagination' => [
'pageSize' => $this->_pageSize,
]
]);
В вашем коде = $ UID должен быть массив, иначе у него всегда будет один идентификатор. последнее в ваших $ businessUsers.
измените свой код на это:
public function search($params)
{
//current user logedin
$CurrentUserID = Yii::$app->user->getId();
//Find business to which current user is registered
$BusinessID = Yii::$app->mycomponent->getBusinessID($CurrentUserID);
//Now find all the users with this business id
$BusinessUsers= Yii::$app->mycomponent->getBusinessUsersID($BusinessID);
//check if $BusinessUsers has records...
$UID = yii\helpers\ArrayHelper::getColumn($BusinessUsers, 'user_id');
$query = User:: find()->where(['in','id', $UID]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_ASC]],
'pagination' => [
'pageSize' => $this->_pageSize,
]
]);
}
Попробуйте этот простой способ
public function search($params)
{
//current user logedin
$CurrentUserID = Yii::$app->user->getId();
//Find business to which current user is registered
$BusinessID = Yii::$app->mycomponent->getBusinessID($CurrentUserID);
//Now find all the users with this business id
$BusinessUsers= Yii::$app->mycomponent->getBusinessUsersID($BusinessID);
$UID = yii\helpers\ArrayHelper::map($BusinessUsers,'user_id','user_id');
$query = User:: find()->where(['id'=>$UID]);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_ASC]],
'pagination' => [
'pageSize' => $this->_pageSize,
]
]);
Возможно, вы захотите поместить все идентификаторы в список с разделителями-запятыми, а затем использовать IN
запрос в вашем состоянии где.
public function search($params)
{
//current user logedin
$CurrentUserID = Yii::$app->user->getId();
//Find business to which current user is registered
$BusinessID = Yii::$app->mycomponent->getBusinessID($CurrentUserID);
//Now find all the users with this business id
$BusinessUsers= Yii::$app->mycomponent->getBusinessUsersID($BusinessID);
foreach ($BusinessUsers as $BusinessUser)
{
array_push($UID,$BusinessUser['user_id']); //put all IDs in an array
}
$UID = implode(',',$UID); //making it look like this 1,2,3,4
$query = User:: find()->where('id IN ('.$UID.')');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_ASC]],
'pagination' => [
'pageSize' => $this->_pageSize,
]
]);