Laravel Elquent HasmanyとBellentStoManyが一緒に戻っていません
質問
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);
.
これは明らかにうまくいかないため、いくつかのコンボを試してみました。問題は私のモデル/関係であると思います。
カード/トークンの詳細を付けて注文を取り戻すことができる方法はありますか?
DB情報:各注文は1つのcard_id
のみを持ち、各カードは多くの注文である可能性があります。カードには属の発電所標本はありません。
ORDERSテーブル基本的に:
id | card_id
.
カードテーブル:
id | token
.
order_id
COLをtoken
で戻そうとしています。
解決
Order
モデルでは、これを変更する必要があります。
public function card()
{
return $this->hasOne('Card');
}
.
これに:
public function card()
{
return $this->belongsTo('Card');
}
.
その理由は、hasMany
関係の逆数を定義していることです。belongsTo
関係を使用すると、Eloquentはcard_id
テーブルのorders
列を探します。
所属していません StackOverflow