【问题标题】:Blade returns "1" while trying to display Json DataBlade 在尝试显示 Json 数据时返回“1”
【发布时间】:2023-03-16 13:28:02
【问题描述】:

我正在尝试在刀片中显示 json 结果,但是当我尝试显示州名,地区名称时,从对应关系中,我在刀片中得到 1, 我能够显示“用户”关系和“新安装”。

我的模特

NewInstallation.php

public function newInstallationPrePayment()
{
    return $this->hasMany(NewInstallationPrePayment::class, 'installation_order_id', 'id');
}

public function state()
{
    return $this->hasOne(State::class, 'id', 'state');
}

public function district()
{
    return $this->hasOne(District::class, 'id', 'district');
}

NewInstallationPaymentStatus.php

public function newInstallationPrePayment()
{
    return $this->belongsTo(NewInstallationPrePayment::class, 'order_name', 'order_name');
}

控制器

$new_installation_order = NewInstallationPaymentStatus::with([
        'newInstallationPrePayment.newInstallation.state',
        'newInstallationPrePayment.newInstallation.district',
        'newInstallationPrePayment.newInstallation.user']
    )->findOrFail($id);

刀片

{{$new_installation_order}} 

我得到低于上述的 json 结果

但是当我尝试调用 state 时

{{$new_installation_order['newInstallationPrePayment']['newInstallation']['district'] }}

当我使用这个时,我得到 1

Json:

{
   "id":2,
   "user_id":1,
   "order_name":"ORDER_ID_NW_SW-24",
   "order_amount":"118.00",
   "referenceId":"290927",
   "txStatus":"SUCCESS",
   "paymentMode":"CREDIT_CARD",
   "txMsg":"Transaction Successful",
   "txTime":"2020-03-31 14:34:52",
   "order_status":"NEW",
   "deleted_at":null,
   "created_at":"2020-03-31T16:37:34.000000Z",
   "updated_at":"2020-03-31T16:37:34.000000Z",
   "new_installation_pre_payment":{
      "id":21,
      "user_id":0,
      "installation_order_id":24,
      "order_name":"ORDER_ID_NW_SW-24",
      "payment_status":"SUCCESS",
      "created_at":"2020-03-31T09:04:33.000000Z",
      "updated_at":"2020-03-31T16:37:34.000000Z",
      "deleted_at":null,
      "new_installation":{
         "id":24,
         "f_name":"Full Name",
         "p_no":"",
         "address":"Address",
         "address_line_1":"Address",
         "state":{
            "id":1,
            "state_name":"Tamil Nadu",
            "deleted_at":null,
            "created_at":"2020-03-27T04:16:37.000000Z",
            "updated_at":"2020-03-27T04:16:37.000000Z"
         },
         "district":{
            "id":1,
            "state_id":1,
            "district_name":"Chennai",
            "deleted_at":null,
            "created_at":"2020-03-27T04:17:22.000000Z",
            "updated_at":"2020-03-27T04:17:22.000000Z"
         },
         "area":"Area Name",
         "landmark":"Land Mark",
         "pincode":"123456",
         "fees_id":1,
         "user_id":1,
         "deleted_at":null,
         "created_at":"2020-03-31T09:04:33.000000Z",
         "updated_at":"2020-03-31T09:04:33.000000Z",
         "user":{
            "id":1,
            "name":"admin",
            "email":"tesmachino@gmail.com",
            "email_verified_at":null,
            "created_at":"2020-03-29T10:33:36.000000Z",
            "updated_at":"2020-03-29T10:33:36.000000Z"
         }
      }
   }
}

【问题讨论】:

  • Omar Jayed 的回答应该可以解决问题。将来,您可以随时使用php artisan tinker 来玩结果。您可以直接在 tinker 中分析该模型。
  • 我意识到 Omay Jayed 的回答不会产生影响。您可以随时使用php artisan tinker 来处理结果。这几乎是一个 REPL;非常适合调试。您可以尝试使用它并查看您获得的价值吗?

标签: php json laravel eloquent laravel-blade


【解决方案1】:

如果您将数据编码为 json 然后发送到视图,我不会。它似乎是一个 json 对象,而不是 php 数组。这就是为什么刀片不能迭代它。如果您将其编码为 json,请尽量不要这样做。或者尝试在将其发送到视图之前对其进行解码。

return view('viewname')->with(['new_installation_order' => json_decode($new_installation_order)])

那就试试这个

{{$new_installation_order->newInstallationPrePayment->newInstallation->district }}

您还可以解码刀片文件中的 json。做最适合你的事情。

【讨论】:

  • 这不会有任何区别。 $variable['key']$variable->key 是等价的。
  • 谢谢@Nahiyan。我似乎错过了这一点。对于那个很抱歉。但是,我编辑了我的答案。请让我知道它是否适合您。
  • 谢谢@omarjayed,Nahiyan——我在模型关系中将州更新为州和区到区,它开始工作了。我想知道如何!!
  • 我敢打赌你的数据库引擎是区分大小写的。尝试运行一些不同大小写的 SQL 查询并让我们知道?将来可能会对某人有所帮助。
【解决方案2】:

您可能想尝试将特定参数而不是整个对象传递给您的视图。我怀疑这是因为您将 json 作为字符串传递给视图。

所以试试这样吧:


$district = $new_installation_order['newInstallationPrePayment']['newInstallation']['district'];

return view('test')->with(['district' => $district]);

您能否发布在您的控制器上调用的整个方法,或者至少发布 return 语句?

【讨论】:

  • 感谢 mchljams -- 我在模型关系中将州更新为州和区到区 .. 它的工作
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2021-12-25
  • 2018-06-04
  • 2019-08-01
  • 2015-10-19
相关资源
最近更新 更多