gpt4 book ai didi

php - 在 laravel 中同时插入一个有多个关系表

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:18 26 4
gpt4 key购买 nike

我正在使用 PHP Laravel 框架。我有 1 到 M 个关系表 orderproducts .

ORDER TABLE - orderid <--autoincrement primary key
- orderdate
- Name

PRODUCTS TABLE - productid <--autoincrement primary key
- orderid <--foreign key reference to order table
- productName
- price
我的模型如下 -->
订购型号:

class Order extends Eloquent 
{

protected $table = 'order';

public function products()
{
return $this->hasMany('Products','orderid');
}

}

产品型号:

class Products extends Eloquent 
{
protected $table = 'products';
}

我有一个表格,我在其中输入订单日期、客户姓名和产品详细信息,这些详细信息可以是多个产品。用户可以在一个订单中拥有一个或多个产品。
所以现在我有一次插入有关两个表的详细信息。
我读了这个文档 http://laravel.com/docs/eloquent#inserting-related-models
他们在下面给出了插入相关模型的代码 -->

$comments = array(
new Comment(array('message' => 'A new comment.')),
new Comment(array('message' => 'Another comment.')),
new Comment(array('message' => 'The latest comment.'))
);

$post = Post::find(1);

$post->comments()->saveMany($comments);

但这里他们知道要从父表中找到的 ID,但在我的例子中,我必须在 Order 表中插入详细信息,然后在 Products 表中为之前插入的订单插入有关产品的详细信息。 问题是如何找到新插入的orderid?我正在为 orderid 使用自动增量订单表中的字段。

最佳答案

简单地:

$order = new Order;
... // assign some properties
$order->save();

$products = [new Product(...), new Product(...)];

$order->products()->saveMany($products);

然后在模型上设置protected $primaryKey,就像 Zwacky 已经说过的那样。

现在,我怀疑这是否是您想要的关系。这意味着每个产品仅存在于单个订单的上下文中。我认为这应该是多对多,但那是你的决定。

关于php - 在 laravel 中同时插入一个有多个关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com