Laravel - 在带有ID的播种机中获得产品价格

时间:2018-03-22 09:00:08

标签: php laravel laravel-5

我试图为我的数据库播种。目前,我正试图获得ID为$index的产品的价格。我的播种机看起来像这样。

foreach(range(1,25) as $index)
    {
        DB::table('orderitems')->insert([

            'order_id' => rand(1, 25),
            'product_id' => $index,
            'price' => '',
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now(),

        ]);
    }

我将这粒种子送达25次。我想要实现的是获得具有给定id的每个产品的价格。比方说,例如,product_id是10.我希望产品的价格为ID 10.关系很好。我可以做一些像$ product->价格的东西,它工作正常。我怎样才能做到这一点?

数据库看起来像这样

Products
    name
    description
    price
    period

提前致谢!

4 个答案:

答案 0 :(得分:2)

 'price' => Product::where('id',$index)->first()->price,

答案 1 :(得分:1)

您可以使用类似下面的代码查询产品ID获取产品价格:

foreach(range(1,25) as $index)
    {
        $product = DB::table("products")->where('id',$index)->first();
        DB::table('orderitems')->insert([

            'order_id' => rand(1, 25),
            'product_id' => $index,
            'price' => $product->price,
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now(),

        ]);
    }

答案 2 :(得分:0)

你可以这样试试。

foreach(range(1,25) as $index)
    {        
        $price = App\Products::->find($index)->price;
        DB::table('orderitems')->insert([
            'order_id' => rand(1, 25),
            'product_id' => $index,
            'price' => $price,
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now(),
        ]);
    }

答案 3 :(得分:0)

试试这个:

$range = range(1,25);
$productIds = Product::whereIn('id', $range)->pluck('price', 'id');    

foreach($range as $index)
{
        DB::table('orderitems')->insert([    
            'order_id' => rand(1, 25),
            'product_id' => $index,
            'price' => $productIds[$index] ?? null,
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now(),

        ]);
}