mysql - 优化 Laravel Eloquent?
问题描述
我对我的 laravel 项目有一个有效的查询。有没有办法优化或缩短这段代码?
$transaction = DB::connection('mysql')->table('pwn_transaction')
->join('pwn_transaction_has_details', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_details.pwn_transaction_ticket_number')
->join('pwn_transaction_details', 'pwn_transaction_has_details.pwn_transaction_details_id', '=', 'pwn_transaction_details.id')
->join('pwn_transaction_has_transaction_items', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_transaction_items.pwn_transaction_ticket_number')
->join('pwn_branch_has_transaction', 'pwn_transaction.ticket_number', '=', 'pwn_branch_has_transaction.pwn_transaction_ticket_number')
->join('pwn_transaction_has_customers', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_customers.pwn_transaction_ticket_number')
->join('pwn_customers', 'pwn_transaction_has_customers.pwn_customers_id', '=', 'pwn_customers.id')
->groupBy('ticket_number')
->get();
解决方案
首先,你需要阅读Laravel eloquent
例如。Transaction
控制器中带有模型的简单代码
$transaction = Transaction::get();
您可以在模型中使用雄辩的关系
交易模型
public function items()
{
return $this->hasOne(TransactionItem::class); //based on your model and relationship
}
检索关系约束急切负载
$transaction = Transaction::with('items)->get();
Laravelmysql
用作默认连接或基于您的config/database.php
文件
如果你想使用多个数据库,你可以使用类似的东西
Transaction
在您的模型中定义以下行
protected $connection = 'your-connection-name';
根据您的评论
Transaction
确保在模型中定义正确的关系
Transaction::with('hasDetails', 'details', 'branch', 'hasCustomers', 'customer')
->groupBy('ticket_number')
->where('ticket_number', $request->pawnTicket) //assume ticket_number column is inside the transactions table
->get();
推荐阅读
- c# - 十进制到十六进制签名 2 转换器
- javascript - 显示来自 Firestore 时间戳的日期(不是时间)
- android - webview 引擎上的 android 浏览器中的 Rem 单位
- javascript - 使用 child_process.exec 运行 npm pack
- c - 在 C 程序 (Lib ELF) 中检索被调用函数的名称
- c++ - 打开模板参数:gcc 是否删除了开关?
- javascript - 如何更改具有递增值的 HTML 元素?
- html - 停止在子元素单击时将鼠标悬停在元素上
- reactjs - 如何访问store进行reducer的动态加载
- aws-appsync - Appsync Javascript 客户端选择