Cakephp-3.x: चयनित उपनाम का डेटा प्रकार कैसे बदलें?




casting cakephp-3.0 (2)

केकपीएचपी 3.2 के रूप में

आप आगे के प्रकारों को जोड़ने के लिए Query::selectTypeMap() का उपयोग कर सकते हैं, जो केवल उन क्षेत्रों को चुनने के लिए उपयोग किए जा रहे हैं जब डेटा पुनर्प्राप्त किया जा रहा है।

$query = $table
    ->find()
    ->select(['alias' => 'actual_field', /* ... */]);

$query
    ->selectTypeMap()
    ->addDefaults([
        'alias' => 'integer'
    ]);

आप किसी भी अंतर्निहित डेटा प्रकारों के साथ-साथ कस्टम लोगों का उपयोग कर सकते हैं। इस स्थिति में alias क्षेत्र अब पूर्णांक के रूप में डाला जाएगा।

यह सभी देखें

CakePHP 3.1 और उससे पहले के साथ

आपको Query::typeMap() का उपयोग करना होगा, जो न केवल चयनित फ़ील्ड को प्रभावित करेगा जब डेटा पुनर्प्राप्त किया जा रहा है, लेकिन विभिन्न अन्य स्थानों पर भी जहां फ़ील्ड प्रकार के अनुसार डेटा Query::typeMap() होगा, जिससे अवांछित टक्कर हो सकती है। , इसलिए इसका उपयोग सावधानी से करें।

$query
    ->typeMap()
    ->addDefaults([
        'alias' => 'integer'
    ]);

यह सभी देखें

मौजूदा कॉलम का प्रकार बदलें

तालिका के मौजूदा स्तंभ के प्रकार को बदलना भी संभव है, हालांकि उन्हें एक विशिष्ट सिंटैक्स का उपयोग करके सेट करने की आवश्यकता होती है, जैसे कि CakePHP द्वारा उपयोग किए जाने वाले स्तंभ उपनाम में, अर्थात, तालिका उपनाम और __ द्वारा स्तंभित नाम, उदा। , Articles उपनाम के साथ एक तालिका और id नामक एक कॉलम के लिए, यह id होगा।

इसे या तो मैन्युअल रूप से सेट किया जा सकता है, या बेहतर तरीके से Query::aliasField() माध्यम से प्राप्त किया जा सकता है Query::aliasField() , जैसे:

// $field will look like ['Alias__id' => 'Alias.id']
$field = $query->aliasField('id', $table->alias());

$query
    ->selectTypeMap()
    ->addDefaults([
        key($field) => 'string'
    ]);

यह id कॉलम के डिफ़ॉल्ट प्रकार को string

यह सभी देखें

जब मैं करने की कोशिश करूँ:

$fields = array('id' => 'custom_id', 'title' => 'some_name');

परिणाम मुझे एक स्ट्रिंग के रूप में id

यदि मैं करता हूँ:

$fields = array('custom_id', 'title' => 'some_name');

तब यह पूर्णांक के रूप में custom_id देता है।

मैं डेटा प्रकार custom_id बिना id रूप में custom_id कैसे प्राप्त कर सकता हूं। मैंने प्रलेखन पढ़ा लेकिन बहुत मदद नहीं मिली।

कुछ ऐसा है जो वर्चुअल फील्ड मैं सोच सकता हूं। लेकिन क्या यह वर्चुअल फ़ील्ड्स आदि के उपयोग के बिना खोज क्वेरी के अंदर संभव है?

अग्रिम में धन्यवाद


हाय मेरा वैकल्पिक उदाहरण पूर्ण, उपयोगकर्ता स्कीमा () नियंत्रक में उपयोगकर्ता प्रकार कॉलम अलियासफेल जोड़कर डेटा जोड़ते हैं:

        $this->Users->schema()
            ->addColumn('is_licensed', [
                'type' => 'boolean',
            ])
            ->addColumn('total_of_licenses', [
                'type' => 'integer',
            ]);

        $fields = [
            'Users.id',
            'Users.username',
            'Users.first_name',
            'Users.last_name',
            'Users.active',
            'Users__is_licensed' => 'if(count(LicenseesUsers.id)>=1,true,false)',
            'Users__total_of_licenses' => 'count(LicenseesUsers.id)',
            'Users.created',
            'Users.modified',
            'Languages.id',
            'Languages.name',
            'Countries.id',
            'Countries.name',
            'UserRoles.id',
            'UserRoles.name',
        ];

     $where = [
        'contain' => ['UserRoles', 'Countries', 'Languages'],
        'fields' => $fields,
        'join' => [
            'LicenseesUsers' => [
                'table' => 'licensees_users',
                'type' => 'LEFT',
                'conditions' => [
                    'Users.id = LicenseesUsers.users_id'
                ],
            ],
        ],
        'group' => 'Users.id'
    ];

    // Set pagination
    $this->paginate = $where;

   // Get data in array
   $users = $this->paginate($this->Users)->toArray();




query-builder