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

السؤال

نشر

لدي select group ضمن فورم وأرغب بتعبئة الخيارات عن طريق علاقة تربط جدولين في قاعدة البيانات seller والذي يرتبط مع مستخدمين user، وقد حاولت استخدام pulk ولكنها لم تنجح:

{!! Form::selectGroup('seller_id', 'Seller', Seller::with('user')->pluck('user.first_name', 'id')->toArray(), null) !!}

والمشكلة أنني لم أتمكن من الحصول على اسماء المستخدمين من user.first_name. فكيف يمكنني تنفيذها بشكل مشابه؟

Recommended Posts

  • 0
نشر

باستخدام Pulk في لارافل يمكنك تنفيذها كالتالي:

$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id')

ثم المرور على المتغيّر sellers وطباعة الحقول اللازمة منه.

وأيضاً يوجد طريقة أخرى عن طريق استخدام join مع pulk:

$s = Seller::join('users', 'sellers.user_id', '=', 'users.id')
          ->pluck('sellers.id', 'users.id')
          ->all();

عندها سيتم الدمج بين المستخدمين والبائع عن طريق الرقم الفريد المعرّف id. والحصول على مصفوفة بشكل مشابه للتالي:

[
    'seller_1' => 'user_1',
    'seller_2' => 'user_2',
    'seller_3' => 'user_3',
    ....
];

كما ويمكنك بشكل مباشر تعريف العلاقة بداخل المودل:

Class Seller extends Model {
    ...

    public function user()
    {
        return $this->hasOne(user::class, 'id')
            ->select('id', 'first_name');
    }
}

ويمكنك تغيير نوع العلاقة إلى hasMany أو النوع الذي يناسب مشروعك

  • 0
نشر

يمكن استخدام pluk في الاستعلام بهذا الشكل 

$sellers = Seller::with('user')->get()->pluck('user.first_name', 'id')

ويمكن تنفيذها مع join 

$s = Seller::join('users', 'sellers.user_id', '=', 'users.id')->pluck('sellers.id', 'users.id')->all();

ويمكن في داخل ملف Model بهذا الشكل 

public function user()
{
	return $this->hasOne(user::class, 'id')->select('id', 'first_name');
}

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...