如何有效地在Laravel中分配外键值

时间:2015-06-02 14:55:59

标签: php laravel laravel-5

所以我昨晚刚开始和Laravel一起玩,我有经验使用Django Framework for python。

所以有很多相似之处,到目前为止我印象非常深刻。

但是,我很难理解如何有效地将外键值分配给表。

例如,我有两个模型。

User
Order

订单将为用户提供外键值。     订购          - 具有用户的外键,标题为user_id

我希望能够做到的,来自Django,我可以获得当前经过身份验证的用户并使用类似的东西将其直接分配给外键值...

$order->user = Auth::user();

$order->user_id = Auth::user();

然而,这不起作用...... 如果我像这样手动获取user_id,那么工作是什么......

$order->user_id = Auth::user()->id;

在我看来,Laravel应该能够识别出由于外键定义而需要User对象的id,而不必指定它...就像在Django中一样。

Laravel是否支持这样的事情,如果是这样,它是如何实现的? 我使用的是Laravel 5.0

1 个答案:

答案 0 :(得分:3)

我猜猜你有一个HasMany< - >属于您的用户和订单之间的关系。

如果是这样,那么为用户设置实际订单的最有效方法是按照以下步骤操作:

$user->orders()->associate($order);

您必须在User类中使用orders()方法,如下所示:

public function orders()
{
    return $this->hasMany('Path\To\Your\Models\Order');
}

有关详情,请参阅:http://laravel.com/docs/5.0/eloquent#inserting-related-models