Laravel Eloquent有很多人和BelongsToMany没有回来使用

时间:2014-07-30 04:42:12

标签: laravel eloquent

我正在尝试执行单个查询以取回ordercard来收费,但收到错误。

卡片型号:

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 col。

1 个答案:

答案 0 :(得分:1)

Order模型中,您需要更改此内容:

public function card()
{
    return $this->hasOne('Card');
}

到此:

public function card()
{
    return $this->belongsTo('Card');
}

原因是您正在定义hasMany关系的倒数。使用belongsTo关系,Eloquent将在card_id表格中查找orders列。