php - 添加选择获取值
问题描述
我想根据order_status_id获取订单状态名称
我在数组中有订单状态:
$orderStatuses = [
1 => 'Waiting',
2 => 'Delivered',
3 => 'Rejected'
];
我需要获取订单状态名称和 order_status_id。
$orders = Order::limit(50)->get();
我现在只能通过循环每个订单来获取订单状态名称,例如:
foreach($orders as $order){
$order->order_status_name = $orderStatus[$order->order_status_id];
}
有什么方法可以在不使用 foreach 的情况下获取订单状态名称。
我尝试了什么:
Order::addSelect("$orderStatuses[".'order_status_id'."]". " as order_status_name");
我无法得到结果。有什么方法可以从雄辩的查询中获取结果,还是我必须使用 foreach?
解决方案
您可以在模型中创建访问器Order
:
private $orderStatuses = [
1 => 'Waiting',
2 => 'Delivered',
3 => 'Rejected'
];
protected $appends = ['status'];
public function getStatusAttribute()
{
return $this->orderStatuses[$this->order_status_id];
}
然后在您的代码中使用它:
$order->status;
更多关于这个here。
- 编辑
$orders = Order::limit(50)->get();
foreach($orders as $order)
{
$order->status; // as this is computed property.
}
推荐阅读
- json - JsonPath - 提取满足多个条件的对象?
- php - 我不能在 PHP 中回显会话变量虽然它很简单
- angular - is there an Angular event like ngDoneCheck?
- python - 在python中使用正则表达式从字符串中提取多个连续的两个字母
- c++ - 从 txt 文件中读取用户名 [C++]
- docker - 如何在不删除任何图层的情况下删除 docker 图像上的标签
- django - Django Query 查询中对象的第一个 ForeignKey
- mysql - mysql:日期的降序
- google-maps - 如何在flutter中从firestore的地图上显示标记?
- javascript - 未捕获的 SyntaxError:脚本中的令牌无效或意外