Общедоступная функция getProfiles($account_id)Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Общедоступная функция getProfiles($account_id)

Сообщение Anonymous »

Хорошо, у меня есть система, которая генерирует подписки от клиентов, связанных с
  • Сервисом.
  • Аккаунт (электронная почта) ) принадлежащий этому сервису.
  • Профиль, связанный с аккаунтом.
    Все это привязано к клиенту, но чтобы иметь возможность видеть его во время подписки, все это сохраняет связь с аутентифицированным пользователем.
у меня возникла проблема при получении профилей.
В моей таблице «Счета» у меня есть поле с именем sale_type, которое может иметь только 2 параметра:
'завершить' и 'профиль'
У меня есть функции для получения учетных записей, связанных с service_id, поэтому я могу получить профили, связанные с account_id.
Когда учетная запись имеет sale_type = ' полный'; связанные с ним профили связаны через account_id, который, в свою очередь, имеет user_id (владелец учетной записи) в таблице учетных записей.
Но когда учетная запись имеет sale_type = 'profile”; его профили связаны с пользователем через поле user_id в таблице профилей.
Таким образом; если учетная запись имеет значение sale_type = 'complete и вы хотите оформить подписку, вы получите все профили, связанные с этой учетной записью, а если учетная запись имеет значение sale_type = 'profile', вы получите только профили, принадлежащие этой учетной записи, в которой user_id (из таблицы профилей) — это аутентифицированный пользователь.
таблица профилей
На следующем изображении я могу выбрать Службу, я могу выбрать почта (mabeliña@gmail.com) с условием sale_type = 'complete', и тогда я смогу увидеть имеющиеся у него профили.
Просмотр подписки
Но когда я выбираю учетную запись с условием sale_type = 'profile', мне не отображаются профили, которые эта учетная запись имеет от имени аутентифицированного пользователя.
Просмотр подписки
У меня есть функция ниже, которая показывает мне профили в учетных записях sale_type= 'complete', но не отображаются профили в учетных записях sale_type= 'profile'.
public function getProfiles($account_id){
$data = [];

// Obtener la cuenta con el id de cuenta dado
$account = Account::find($account_id);

// Comprobar si la cuenta existe
if ($account) {
$attr = [
'table' => 'profiles',
'columns' => [
'id',
'name',
'pin',
'user_id' // Agregar user_id para obtener este campo también
],
'compare' => 'account_id',
'compare_value' => $account_id
];
$response = Helper::getDataSelect($attr);

// Verificar el sale_type de la cuenta
if ($account->sale_type == 'complete') {
// Si sale_type es 'complete', mostrar todos los perfiles
$data = $response;
} else if ($account->sale_type == 'profile') {
// Si sale_type es 'profile', mostrar solo los perfiles para el usuario actual
if (count($response) > 0){
foreach ($response as $res){
$profile = Profile::find($res->id);

if ($profile && $profile->subscriptions->count() == 0) {
if ($profile->user_id == Auth::user()->id) {
array_push($data, $res);
}
}
}
}
}
}

return response()->json(['data' => $data]);
}

Я пробовал изменить эту функцию следующим образом:
public function getProfiles($account_id){
$data = [];
$attr = [
'table'=>'profiles',
'columns'=>[
'id',
'name',
'pin'
],
'compare'=>'account_id',
'compare_value'=>$account_id
];
$response = Helper::getDataSelect($attr);
if(count($response) > 0){
foreach($response as $res){
$profile = Profile::find($res->id);
if($profile->subscriptions->count() == 0){

if($profile->user_id == Auth::user()->id){
array_push($data, $res);
}
}
}
}

return response()->json(['data'=>$data]);
}

Таким образом, я могу видеть профили учетной записи sale_type= 'profile', но не позволяет мне видеть профили учетных записей sale_type='complete' :(
Я вижу принадлежащие мне профили
а для «полной» учетной записи я не вижу профили
Мне нужна помощь, чтобы я мог показывать профили в зависимости от sale_type, потому что в настоящее время, если я использую один метод, я вижу sale_type='complete', а другие нет, и если я изменю функцию, я смогу увидеть аккаунты sale_type='profile', а другие нет :(
Эта моя функция в помощнике:
public static function getDataSelect($attr, $validateUser=false){
if($attr){
if($validateUser){
$data = DB::table($attr['table'])->select($attr['columns'])->where($attr['compare'],$attr['compare_value'])->where('user_id',Auth::user()->id)->get();
}else{
$data = DB::table($attr['table'])->select($attr['columns'])->where($attr['compare'],$attr['compare_value'])->get();
}

return $data;
}else{
return null;
}

}


Подробнее здесь: https://stackoverflow.com/questions/791 ... account-id
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»