如何从 laravel 中包含 product_id 的订单表中获取产品名称?

我无法根据匹配的 ID 获取产品名称,但我在表中得到相同的名称,如下所示 这是产品的有序列表

请查看下面显示的参考表(order_list 表)

order_list 表

餐桌产品

产品表

我的控制器

public function details($id)

{

    $orders = Order_model::find($id);        


    $Order_lists = Order_list::orderBy('id', 'asc')->where('user_id', '=', Auth::user()->id)->where('order_id', '=', $id)->get();


    foreach($Order_lists as $order_list)

    {

        $prod_name = DB::table("products")->where('id', $order_list->product_id)->value('name');


    }

    $address = DB::table("delivery_address")->where('user_id', '=', Auth::user()->id)->get();


    if(Auth::user()->role == 'customer')

    {

        return view('customer.orders.details',['Order_lists' => $Order_lists, 'orders' => $orders, 'address' => $address, 'prod_name' => $prod_name]);

    }


}

请帮助我,因为我正处于学习阶段,任何帮助都会很高兴听到谢谢。


Cats萌萌
浏览 113回答 1
1回答

www说

问题是 $prod_name 是一个单一的变量,你在循环中运行它。所以它只替换每次迭代并只获取最后一次迭代名称。因此,如果您想使用 $order_list 获取每个产品名称,您可以轻松地为产品表创建模型。然后创建一对一的 Order_list。例如:https://laravel.com/docs/7.x/eloquent-relationships#one-to-oneclass Order_list extends Model{&nbsp; &nbsp;&nbsp; &nbsp; public function products()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return $this->hasOne('App\Products',"product_id");&nbsp; //your model name and path&nbsp; &nbsp; }}然后你可以像这样获得所有产品的订单列表数据:$Order_lists = Order_list::orderBy('id', 'asc')->where('user_id', '=', Auth::user()->id)->where('order_id', '=', $id)->with('products')->get();产品详情应在$Order_lists[0]->products->name编辑:在刀片文件中运行它@foreach($Order_lists as $Order_list)////other <td>s&nbsp; &nbsp; <td>{{$Order_list->products->name}}</td>@endforeach如果上面的方法很复杂,你可以创建单独的数组来命名&nbsp;$prod_name =[];&nbsp;foreach($Order_lists as $order_list)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $prod_name[$order_list->product_id] = DB::table("products")->where('id',&nbsp; $order_list->product_id)->value('name');&nbsp; &nbsp; }然后像这样在刀片文件上读取它:{{$prod_name[$order_list->product_id]}}编辑:要以第二种方法打印元素,您可以使用刀片语法。首先将变量发送到 .blade 文件,例如:view('your.blade.php,compact('Order_lists','prod_name'));//then print in .blade file&nbsp;&nbsp;@foreach($Order_lists as $Order_list)&nbsp; &nbsp; &nbsp; &nbsp; ////other <td>s&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td>{{$prod_name[$order_list->product_id]}}</td>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; @endforeach
打开App,查看更多内容
随时随地看视频慕课网APP