Laravel Eloquent hasMany وBelongsToMany لا يعودان باستخدام مع
سؤال
أحاول إجراء استعلام واحد لاستعادة ملف order
و ال card
لتوجيه الاتهام، ولكن الحصول على خطأ.
نموذج البطاقة:
class Card extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function user()
{
return $this->belongsTo('User');
}
public function orders()
{
return $this->hasMany('Order');
}
}
نموذج الطلب:
class Order extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function user()
{
return $this->belongsTo('User');
}
public function card()
{
return $this->hasOne('Card');
}
public function address()
{
return $this->belongsTo('Address');
}
public function orderItems()
{
return $this->hasMany('OrderItem');
}
}
ما أحاول استعادته:
$order = Order::with('card')->find($id);
من الواضح أن هذا لا يعمل ولقد حاولت عدة مجموعات.أعتقد أن المشكلة تتعلق بنماذجي/علاقاتي.
هل لديك أي فكرة عن كيفية استعادة الطلب باستخدام تفاصيل البطاقة/الرمز المميز؟
معلومات قاعدة البيانات:يمكن أن يحتوي كل طلب على طلب واحد فقط card_id
ويمكن أن تكون كل بطاقة في العديد من الطلبات.لا يوجد order_id
في البطاقة.
جدول الطلبات بشكل أساسي:
id | card_id
جدول البطاقات:
id | token
تحاول الحصول على token
العقيد للعودة مع Order
.
المحلول
في الخاص بك Order
النموذج، تحتاج إلى تغيير هذا:
public function card()
{
return $this->hasOne('Card');
}
الى هذا:
public function card()
{
return $this->belongsTo('Card');
}
والسبب هو أنك تحدد عكس hasMany
علاقة.مع ال belongsTo
العلاقة، سوف يبحث Eloquent عن أ card_id
عمود على orders
طاولة.
لا تنتمي إلى StackOverflow