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

هل بإمكاني التعديل على البيانات القادمة من الداتا بيز قبل إرسالها إلى الAPI?

محمود موسى2

السؤال

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

بنفترض أن البيانات المرجعة من ال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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...