【问题标题】:Laravel - How to efficiently apply Eloquent ORM in getting dataLaravel - 如何有效地应用 Eloquent ORM 获取数据
【发布时间】:2019-01-22 00:16:31
【问题描述】:

我是 Laravel 的新手,我正在用它创建一个预订系统。现在我想问一下如何使用 Eloquent 从数据库中获取数据是否有更短的方法/正确的方法。我需要显示一系列选择房间的数据。(screenshot- I will hide the other select using jQuery based on the selected option on the first 2 drop downs. I don't want to use AJAX for this)

现在我正在做的是将不同的数组从控制器传递到刀片:

$rooms = Room::where('Availability',0)->get();
$room_types = Room::distinct()->select('RoomType')->get();
$floor_nos = Room::distinct()->select('FloorNo')->get();

但我不知道如何根据房间类型和楼层号对它们进行分组: 这是我的数据:

Room Type - Bedspace
Floor No - 1
Room Nos [BS201, BS202, BS203, BS301,BS302,BS303, FR201, FR301(3rd Floor Family Rooms)]
Each Room No has Bed Nos. [BS201(1-UPPER, 2-UPPER),BS202(1-UPPER,2-UPPER)]

我需要展示这个:

First dropdown - Room Types
Second dropdown - Floor Nos
Third dropdown - Room Nos
Fourth dropdown - Bed Nos

因此,当我选择 Room Type Bedspace 和 Floor No 2 时,第三个选择下拉菜单将是 BS201, BS202, BS203。如果我选择 Family Room 和 Floor No 3,第三个下拉列表将是 FR201,然后如果我选择 FR201,Bed No 应该是 1-UPPER(这里的值是那张床的 ID没有)

编辑:我的房间表截图:http://prntscr.com/mac4o9

【问题讨论】:

  • 嗨,保罗。我们能看到你的rooms 表的结构吗?此外,如果您想让下拉列表自动加载正确的子组,那么您需要进行某种页面刷新,或者使用 javascript 根据用户输入更改后续下拉列表,通过 ajax 或发送所有数据到页面,然后用js过滤。
  • 当然,我会编辑我的帖子。这就是我的计划,我将在选项中添加data-*属性以使用js进行过滤。
  • 是否有任何具体原因表明这一切都在一个表中,而不是相关的表?我认为这不会有太大的不同,只是想知道。
  • 重新阅读您的问题,我们在这里解决什么具体问题?
  • 我需要有一系列相互连接的下拉菜单,我的意思是我将如何有效地执行数据检索prntscr.com/macbt4,我的问题是我无法为家庭分开房间号房间和床位房间根据楼层号组合。关于桌子,你的意思是我应该有一张单独的桌子来记录房间类型、楼层等?我只需要将房间连接到签到。对不起,我对 Laravel 和 DB 创建真的很陌生。

标签: php laravel eloquent


【解决方案1】:

我建议你创建三个 Dropdown

  1. 有空房
  2. 在选择时运行一个 Ajax 并获得房间类型选项
  3. 在选择房间类型时运行 ajax 并获取楼层号的选项

对于 Ajax,您可以使用以下代码

jQuery( ajax {
     url: '{!! route('frontend.get-room-types') !!}',
     method: 'POST',
     dataType: 'JSON',
     data: {
         selectedRoom: document.getElementById("selectedRoom").value
     },
     success: function(data)
     {
         //Set Options for Room Type.
     },
     error: function(data)
     {
        alert("Something went Wrong");
     }

})

这样您就可以通过 Ajax 调用获取最新数据。

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 2015-01-28
    • 2017-04-07
    • 2021-01-19
    • 2018-01-17
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多