Laravel Eloquent имеет множество и принадлежит многим, не возвращая использование с
Вопрос
Я пытаюсь выполнить один запрос, чтобы получить обратно 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
отношения, Красноречивый будет искать card_id
колонка на orders
стол.