Значение настраиваемого поля клиента Whmcs - PullRequest
0 голосов
/ 10 марта 2019

Испытайте свою удачу здесь после 1 недели безуспешной помощи форума WHMCS и поддержки только ссылок на документы и форумы.

Я хочу получить значение из полей из пользовательских полей клиента, где я знаю имя поля

Для документации и сообщений на форуме это должно теоретически работать, но это не так, ничего не возвращается.Есть идеи?

    $clientFields =  Client::find($clientID)->customFieldValues  ;  
foreach($clientFields AS $field)
{

if (isset($field->customField->fieldName) 

and $field->customField->fieldName == 'NoridCID') 

{ 
    $xml .= $field->customField->value; // Add ID to XML 
}   

    else
    {
        return array("error" => "Some Error Message");

    }
}

1 Ответ

0 голосов
/ 29 апреля 2019

Это действительно должно быть очень легко. Я собираюсь показать вам различные способы сделать это в зависимости от того, что вы хотите получить, и информации, которая у вас под рукой. Конечно, я знаю, что вы знаете fieldname, хотя я бы порекомендовал войти в вашу таблицу tblcustomfields вашей установки WHMCS и получить значение id для этого настраиваемого поля. Теперь давайте перейдем к коду:

Первый: укажите следующий код:

require("init.php");
use WHMCS\Database\Capsule;

Второе: объявить известную переменную:

Я предполагаю, что у вас уже есть значения, которые вы знаете. Так что я просто собираюсь использовать здесь свои псевдо значения:

$clientID = 12;
$customFieldID = 1;
$customFieldName = 'Where did you hear about us?';

Третье: добавить код для извлечения данных

Я собираюсь использовать четыре кода. Выберите то, что лучше всего соответствует вашим потребностям.

A: Получить значение настраиваемого поля для 1 клиента. У вас есть идентификатор клиента и имя настраиваемого поля

$customFieldValue1 =  Capsule::table('tblcustomfields')
                                ->join('tblcustomfieldsvalues','tblcustomfieldsvalues.fieldid','=','tblcustomfields.id')
                                ->where('tblcustomfieldsvalues.relid','=',$clientID)
                                ->where('tblcustomfields.fieldname','=',$customFieldName)
                                ->value('tblcustomfieldsvalues.value');

                                //Use the retrieved vaue e.g echo
                                echo $customFieldValue1."<br/>";

B: Получить значение настраиваемого поля для 1 клиента. У вас есть идентификатор клиента и идентификатор пользовательского поля

$customFieldValue2 = Capsule::table('tblcustomfieldsvalues')
                                ->where('relid',$clientID)
                                ->where('fieldid',$customFieldID)
                                ->value('value');

                                //Use the retrieved vaue e.g echo
                                echo $customFieldValue2."<br/>";

C: Получить значение настраиваемого поля для ВСЕХ клиентов. У вас есть идентификатор клиента и имя настраиваемого поля

$customFieldValues1 =  Capsule::table('tblcustomfields')
                                ->join('tblcustomfieldsvalues','tblcustomfieldsvalues.fieldid','=','tblcustomfields.id')
                                ->select('tblcustomfieldsvalues.value as value','tblcustomfieldsvalues.relid as client')
                                ->where('tblcustomfields.fieldname','=',$customFieldName)
                                ->get();

                                //use retrieved values
                                foreach($customFieldValues1 as $customField){
                                    $clientId = $customField->client;
                                    $customFieldValue = $customField->value;

                                    echo $clientId." : ".$customFieldValue."<br/>";
                                }

C: Получить значения настраиваемых полей для ВСЕХ клиентов. У вас есть идентификатор клиента и идентификатор пользовательского поля

$customFieldValues2 =  Capsule::table('tblcustomfieldsvalues')
                                ->select('relid as client','value')
                                ->where('fieldid',$customFieldID)
                                ->get();

                                //use retrieved values
                                foreach($customFieldValues2 as $customField){
                                    $clientId = $customField->client;
                                    $customFieldValue = $customField->value;

                                    echo $clientId." : ".$customFieldValue."<br/>";
                                }

Пожалуйста, дайте мне знать, если это отвечает на ваш вопрос.

Для получения дополнительной информации о том, как писать запросы с laravel, которые WHMCS в настоящее время использует для взаимодействия с базами данных, вы можете посетить https://laravel.com/docs/5.2/queries

...