【发布时间】:2020-12-22 01:35:57
【问题描述】:
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');
}
}
【问题讨论】:
-
是否有多个类具有相同的
class_id? -
Lagbox。不,只有一个。
-
正如其他人已删除的评论所说,你可能想要
first()而不是get(),所以你会得到一条记录而不是它们的集合 -
如果你有
classes表的模型可能会更容易 -
抱歉。我应该澄清一下 - 我正在使用 get() 以便我可以在视图中使用 foreach 循环,该循环将用于单个和多个结果。如果有办法使用 first() 将值放入结果中,我很乐意只创建两个视图。
标签: laravel collections model insert