当前位置: 首页 > 知识库问答 >
问题:

命令嵌套急切加载雄辩Laravel

上官景铄
2023-03-14

我对雄辩的质询有意见。我正在使用渴望加载(一对多多态关系)来排序“historyable”。日期见下文。

[
   {
      "product_id":12,
      "product_name": "Product C",
      "historyable_type":"App\\Delivery",
      "historyable":{
         "id":2,
         "date":"0303\/0404\/2020",
         "for":"Customer A",
         "created_at":"2020-04-02T09:46:48.000000Z",
      }
   },
   {
      "product_id":1,
      "product_name": "Product A",
      "historyable_type":"App\\Transfer",
      "historyable":{
         "id":1,
         "date":"0202\/0404\/2020",
         "for":"First Balance ****",
         "created_at":"2020-04-02T07:30:45.000000Z",
      }
   },
   {
      "product_id":11,
      "product_name": "Product B",
      "historyable_type":"App\\Delivery",
      "historyable":{
         "id":2,
         "date":"0303\/0404\/2020",
         "for":"Customer B",
         "created_at":"2020-04-02T09:46:48.000000Z",
      }
   }
]

我试着得到这样的结果

[
   {
      "product_id":1,
      "product_name": "Product A",
   },
   {
      "product_id":12,
      "product_name": "Product C",
   },
   {
      "product_id":11,
      "product_name": "Product B",
   }
]

是否有可能运行嵌套懒惰渴望加载Laravel?

产品型号

public function track() {
   return $this->hasMany('App\History');
}

历史模型

public function historyable(){
   return $this->morphTo()->orderBy('date', 'desc');
}

产品控制器

public function json_history(Product $product) {
   $data = $product->with('track.historyable')
   ->where('id', $product->id)
   ->first();
   return $data->track;
}

我有这样的数据库

Products Table
#id
#name

Histories Table
#product_id
#product_name
#historyable_id
#historyable_type

Deliveries Table
#id
#date
#for

Transfers Table
#id
#date
#for

共有1个答案

呼延鸿畅
2023-03-14
public function json_history(Product $product) {
   $data = Product::with('track.historyable')
           ->where('id', $product->id)
           ->first();

   $arr = $data->track->toArray();

   $date = array();
   $create = array();
   foreach ($arr as $key => $row)
   {
      $date[$key]  = $row['historyable']['date'];
      $create[$key]  = $row['historyable']['created_at'];
   }

   array_multisort($date, SORT_DESC, $arr);
   array_multisort($create, SORT_DESC, $arr);

  return $arr;
 }

我不知道,但它对我有用。。但是我还是找到了一条比较短的路。。

 类似资料:
  • 我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有

  • 拉威尔说: 我需要的是这样的东西 我们可以在一个关系中加载多个关系。 这有可能吗?

  • 使用Laravel和雄辩的ORM,我想创建一个属于特定用户(登录的用户)的所有帖子和相应评论的数组或对象。结果将与Respons一起使用e::eloquent();返回JSON。 基本上是伪代码: 或 我有我的数据库设置每个通常与用户的表,评论表和帖子表。评论表有post_id,帖子表有user_id。 在没有Laravel的情况下,要做到这一点的漫长道路是这样的: 但是我想用Laravel的雄辩

  • 你一定看过下面的功能(在facebook上),一个有一些评论的帖子,每个评论都有一个类似的计数器。 https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png 在拉雷维尔,这将是类似的 帖子有很多评论 以下评论发布 类似于用户的评论 CommentLike belong评论 评论有很多类似的评论 所以,现

  • 我无法通过下面的示例了解如何快速加载。这是我当前的数据库,有两个表,Quotes:存储一般信息的地方,QuotesDetails:存储Quotes中每个Quote的详细信息的地方。 在模型中,我有以下结构: 引用。php QuotesDetails.php以下型号: 我使用了hasMany(引号中),因为每个引号可以有/显示3-4个quotesdetails。 在我的控制器中,我使用以下查询: 在

  • 问题内容: 对于拍摄特定的对象我有目标的一个在线竞赛 用户 上传 图片 的 对象 ,其中对象具有 类别 和 子类别 。 用户的仪表板应如下所示: 为了能够在适当的循环中输出图片,我在模型之间安装了 hasMany 关系。所以我可以通过以下方式获得具有方便层次结构的对象 问题: 对于仪表板,我当然只希望来自某个用户的图像: Pictures 模型包含一个 user_id 字段。我可以直接获取用户的图