खोज…


परिचय

एक्सेसर्स और म्यूटेटर आपको मॉडल इंस्टेंस पर उन्हें पुनर्प्राप्त या सेट करने पर एलोकेंट विशेषता मानों को प्रारूपित करने की अनुमति देते हैं। उदाहरण के लिए, आप डेटाबेस में संग्रहीत होने पर मान को एन्क्रिप्ट करने के लिए लारवेल एनक्रिप्ट का उपयोग करना चाह सकते हैं, और जब आप किसी एलोकेंट मॉडल पर इसे एक्सेस करते हैं, तो स्वचालित रूप से विशेषता को डिक्रिप्ट कर देते हैं। कस्टम एक्सेसर्स और म्यूटेटर्स के अलावा, एलक्जेंट स्वचालित रूप से कार्बन इंस्टेंस पर डेट फ़ील्ड्स या यहां तक कि JSON को टेक्स्ट फ़ील्ड भी डाल सकता है।

वाक्य - विन्यास

  • ऊंट मामले में {ATTRIBUTE} विशेषता ($ विशेषता) // सेट करें

एक एक्सेसर्स को परिभाषित करना

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}

एक्सेसर प्राप्त करना:

जैसा कि आप देख सकते हैं, कॉलम का मूल मान एक्सेसर को दिया जाता है, जिससे आप मूल्य में हेरफेर कर सकते हैं। एक्सेसर के मूल्य तक पहुंचने के लिए, आप मॉडल उदाहरण पर first_name विशेषता का उपयोग कर सकते हैं:

$user = App\User::find(1);
$firstName = $user->first_name;

एक म्यूटेटर को परिभाषित करना

class User extends Model  
{
    public function setPasswordAttribute($password)
    {
        $this->attributes['password'] = bcrypt($password);
    } 
    ... 
}

हर बार पासवर्ड गुण सेट होने पर उपरोक्त कोड "bcrypting" करता है।

$user = $users->first();
$user->password = 'white rabbit'; //laravel calls mutator on background
$user->save(); // password is bcrypted and one does not need to call bcrypt('white rabbit')


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow