اذهب إلى المحتوى

السؤال

نشر

السلام عليكم،

بنفترض أن البيانات المرجعة من الapi الخاصة بي هي json:

{
  "name": "Mahmoud Reda",
  "age": 17,
  "type": 1
}

ولنفترض أنني لا أريد إرجاع البيانات هكذا بل أريد التعديل على type حيث إذا كان type = 0 أرجع له كلمة admin وإذا كان type = 1 أرجع له كلمة user فهل من طريقة حل؟ 

Recommended Posts

  • 0
نشر

نعم يمكنك ذلك عن طريق الإستعانة بمفهوم المسترجعات والمعدلات (Accessors & Mutators) في لارافال .

مثال عملي عن ذلك : 

نقوم بتعريف معدل جديد بملف مودل المستخدمين على هذا النحو : 

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's type.
     *
     * @param  string  $value
     * @return void
     */
    public function getTypeAttribute($value)
    {
       if($value == 0 ) return 'admin';
      
       return 'user';
    }
  
}

لاحظ كيفية تعريف المعدل : 

get | {attr} | Attribute 

attr => capitialized

يمكنك القراءة أكثر عن الموضوع من هنا

  • 1
نشر

يمكن أن تستخدم Laravel API Resource

لإنشاء resource ويتم إنشاء ملف ExampleResource داخل مجلد app\Http\Resources

php artisan make:resource ExampleResource

افتح الملف وقم بعمل التعديل المطلوب

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class ExampleResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
			"id": $this->id,
            "name": $this->name,
            "age": $this->age,
            "type": ($this->type == 0) ? "admin" : "user"
        ];
    }
}

ثم تقوم بتمرير ال object or collection ل resource

// في حالة عنصر واحد
return new ExampleResource(Example::findOrFail($id));

// في حالة اكتر من عنصر
return ExampleResource::collection(Example::all();

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...