在 laravel 刀片、数组或对象中

问题描述 投票:0回答:1

数组还是对象?

在控制器或其他层(服务,存储库...),我从不选择列,只是

Product::where(...)->get();

然后在刀片中

{{ $product->name }}

有时我会在 Controller 中添加额外的列,比如

$product->name = $product->translation->name

在 php 8.2 之后,动态属性被弃用,尽管我们可以设置 AllowDynamicProperties。但也许这是我们将来最好遵循/遵守的某种规则?。

我认为,如果不使用 toArray(),那么集合中包含很多我们不需要的信息。

但是我喜欢对象格式,因为我们不需要使用引号。比较:

$product->name
$product['name']

使用数组,在某些情况下我们经常需要转义引号(')

我可以吗

$products = Product::where(...)->get()->toArray();
foreach($products as $product){
    $product['new_column'] = something;
}

$data['products '] = (object) $products;

会不会有什么问题?

php laravel
1个回答
0
投票

我认为你真的过度复杂化了一些东西,而这些东西并不是为了这个变化可以为你的最终产品提供或不能提供的价值主张而导入的。就开发人员经验而言,我们习惯于使用模型。

你可以实现一个注解来删除弃用通知。

use \AllowDynamicProperties;

#[AllowDynamicProperties]
class Product 
{
© www.soinside.com 2019 - 2024. All rights reserved.