【问题标题】:Getting data from multiple tables in Laravel从 Laravel 中的多个表中获取数据
【发布时间】:2019-09-10 09:58:12
【问题描述】:

我想获取有关预订的详细信息,详细信息是预订的服务的每项服务费用、税费和总金额以及状态

费用、税金和总额来自 Charge 模型,Status 模型来自 Status 模型,服务名称来自 Service 模型,booking id 和地址来自 Booking 模型。

在我的控制器中使用下面的代码,我可以获得服务名称、预订 ID 和状态,但我只能获得所有预订的一项成本、税金和金额,尽管它们在各自的表格中是唯一的。

    public function viewInvoices() {
$allProducts = Booking::get()->where('client', Auth::user()->name);
$products = json_decode(json_encode($allProducts));
foreach ($products as $key => $val) {
    $service_name = Service::where(['id' => $val->service])->first();
    $service_fee = Charge::where(['id' => $val->charge])->first();
    $service_status = Status::where(['id' => $val->status])->first();
    $products[$key]->service_name = $service_name->name;
    $products[$key]->service_fee = $service_fee->total;
    $products[$key]->service_status = $service_status->name;
    $product_charge = Charge::where(['id' => $val->charge])->get();
}$charges = json_decode(json_encode($product_charge));
return view('client.payment.invoices')->with(compact('products', 'charges'));
    }

这就是我在控制器中所拥有的,在视图中我使用 for each 循环两次,首先循环遍历 $products,然后循环遍历 $charges。

我可能做错了什么,我该如何纠正它?

【问题讨论】:

    标签: laravel-5.7


    【解决方案1】:

    我建议使用连接从多个表中获取数据,因此您会希望这样做,

        public function viewInvoices() {
        $products = DB::table('bookings')
                ->join('services', 'bookings.service', '=', 'services.id')
                ->join('charges', 'bookings.charge', '=', 'charges.id')
                ->join('statuses', 'bookings.status', '=', 'statuses.id')
                ->select('bookings.*', 'services.s_name', 'services.description', 'statuses.name', 'charges.amount', 'charges.tax', 'charges.total')
                ->get()
                ->where('client', Auth::user()->name);
                return view('client.payment.invoices')->with(compact('products'));
     }
    

    我刚刚根据您的解释假设了每个表中的列名,因此如果它们碰巧不同,只需适当更改即可。

    【讨论】:

    猜你喜欢
    • 2016-06-24
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多