Laravel的新功能有什么似乎应该是一个非问题,但正在引起头痛。
我尝试在返回的结果对象/集合中插入一个键值对(bookingRef),结果如下:
[{"class_id":7,"class_name":"beginner","class_slots_avail":100,"class_slots_booked":53,"class_date":"2020-12-07 21:47:23","class_time":"09:25:00","class_reg_price":350, bookingRef: 127}]
我尝试过push、put和merge等方法,它们会在返回的对象之后插入键值,但这不是我所需要的。
这是我的控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Booking;
use App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Mail;
use DB;
class BookingsController extends Controller
{
//
function store(Request $request) {
$id = $request->input('class');
if(DB::table('classes')->where('class_id', '=', $id)->exists()) {
if(DB::table('classes')->where('class_id', '=', $id)->value('class_slots_booked')
< DB::table('classes')->where('class_id', '=', $id)->value('class_slots_avail')) {
$booking = new Booking();
$booking->class_id = $id;
$booking->user_id = \Auth::id();
$booking->save();
DB::table('classes')->where('class_id', '=', $id)->increment('class_slots_booked', 1);
if($booking) {
$confBook = DB::table('classes')->where('class_id', '=', $id)->get();
$confBook->bookingRef = $booking->id;
\error_log($confBook);
}
}
else return('CLASS FULLY BOOOOKED');
}
else return('CLASS NOT Available');
}
}
3条答案
按热度按时间i34xakig1#
您可以减少查询,并通过一些调整将这些额外的数据放在适当的位置:
如果为
classes
表设置一个Model,这会更方便一点,同时为Booking设置一个关系也会更好。mcdcgff02#
我设法解决了这个问题,这要归功于Lagbox使用模型的建议:
在我看来,get()方法返回一个包含object的数组,这就是为什么object->new_property = value不起作用的原因。然而,第一个()方法似乎返回一个对象,这就是为什么它会这样。看来我得好好阅读一下模型和收藏品了
dgtucam13#
在本例中,从集合[1,2,3]开始。我们使用map方法为集合中的每一项加1。然后,我们使用push方法向集合中添加一个新值4。最后,我们使用all方法来检索集合的底层数组表示。
输出结果为: