好的,我有一个系统,可以生成与以下内容相关的客户的订阅:
在我的帐户表中,我有一个名为 sale_type 的字段,它只能有 2 个选项: “完整”和“个人资料”
我有获取与 service_id 关联的帐户的函数,因此我可以获得与 account_id 关联的配置文件。当账户的 sale_type = 'complete' 时;其关联的配置文件通过 account_id 链接,而 account_id 在帐户表中又具有 user_id(帐户持有者)。
但是当账户有 sale_type = 'profile' 时;它的配置文件通过配置文件表中名为 user_id 的字段与用户关联。
这样;如果帐户是 sale_type = 'complete 并且您想要订阅,您将获得与该帐户关联的所有配置文件,而如果帐户是 sale_type = 'profile',您将仅获得属于该帐户的配置文件,其中user_id(来自配置文件表)是经过身份验证的用户。
在下图中,我可以选择服务,我可以选择条件 sale_type = 'complete' 的邮件 (mabeliñ
[email protected]),然后我可以看到它具有的配置文件。
但是,当我选择条件 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;
}
}
这是经过修改的代码:
public function getProfiles($account_id) {
$data = [];
$account = Account::find($account_id);
if ($account) {
$attr = [
'table' => 'profiles',
'columns' => [
'id',
'name',
'pin',
'user_id'
],
'compare' => 'account_id',
'compare_value' => $account_id
];
$response = Helper::getDataSelect($attr);
if ($account->sale_type == 'complete') {
$data = $response;
} else if ($account->sale_type == 'profile') {
foreach ($response as $res) {
if ($res->user_id == Auth::user()->id) {
$data[] = $res;
}
}
}
}
return response()->json(['data' => $data]);
}
我希望这对你有帮助。