Witam , robie pewien projekt w laravelu i mam problem taki , że w momencie kiedy chce wczytać dane z metody "ajaxGetReservationData" która jest w moim backend controller wyskakuje mi błąd Failed to load resource: the server responded with a status of 500 (Internal Server Error) , Trying to get property 'room_number' of non-object C:\xampp\htdocs\laravel\app\app\Http\Controllers\BackendController.php#48 / ktos ma jakis pomysł jak to zrobić... poniżej kod z BackendController , BackendRepository oraz admin.js z ajaxem.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Systemrezerwacji\Gateways\BackendGateway;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
class BackendController extends Controller
{
public function __construct(BackendRepositoryInterface $bR, BackendGateway $bG)
{
$this->bR = $bR;
$this->bG = $bG;
}
public function index(Request $request)
{
$objects = $this->bG->getReservations($request);
return view('backend.index',['objects'=>$objects]);
}
public function ajaxGetReservationData(Request $request)
{
$reservation = $this->bR->getReservationData($request);
return response()->json([
'room_number' => $reservation->room_number,
'day_in' => $reservation->day_in,
'day_out' => $reservation->day_out,
'FullName' => $reservation->user->FullName,
'userLink' => route('person', ['id' => $reservation->user->id]),
'confirmResLink' => route('confirmReservation', ['id' => $reservation->id]),
'deleteResLink' => route('deleteReservation', ['id' => $reservation->id]),
'status' => $reservation->status,
]);
}
public function cities(){
return view('backend.cities');
}
public function myobjects(){
return view('backend.myobjects');
}
public function profile(){
return view('backend.profile');
}
public function saveobject(){
return view('backend.saveobject');
}
public function saveroom(){
return view('backend.saveroom');
}
public function confirmReservation($id)
{
return 'to do';
}
public function deleteReservation($id)
{
return redirect()->back(); /* Lecture 34 */
}
}
<?php
namespace App\Systemrezerwacji\Repositories;
use App\Systemrezerwacji\interfaces\BackendRepositoryInterface;
use App\Models\{TouristObject, Reservation};
class BackendRepository implements BackendRepositoryInterface {
public function getOwnerReservations($request)
{
return TouristObject::with([
'rooms' => function($q) {
$q->has('reservations');
},
'rooms.reservations.user'
])
->has('rooms.reservations')
->where('user_id', $request->user()->id)
->get();
}
public function getTouristReservations($request)
{
return TouristObject::with([
'rooms.reservations' => function($q) use($request) {
$q->where('user_id',$request->user()->id);
},
'rooms'=>function($q) use($request){
$q->whereHas('reservations',function($query) use($request){
$query->where('user_id',$request->user()->id);
});
},
'rooms.reservations.user'
])
->whereHas('rooms.reservations',function($q) use($request){
$q->where('user_id',$request->user()->id);
})
->get();
}
public function getReservationData($request)
{
return Reservation::with('user', 'room')
->where('room_id', $request->input('room_id'))
->where('day_in', '<=' ,$request->input('date'))
->where('day_out', '>=' , $request->input('date'))
->first();
}
function datesBetween(startDt, endDt) {
var between = [];
var currentDate = new Date(startDt);
var end = new Date(endDt);
while (currentDate <= end) {
between.push($.datepicker.formatDate('mm/dd/yy', new Date(currentDate)));
currentDate.setDate(currentDate.getDate() + 1);
}
return between;
}
var Ajax = {
get: function get(url, _success) {
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
var _beforeSend = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
$.ajax({
cache: false,
url: base_url + '/' + url,
type: "GET",
data: data,
success: function success(response) {
App[_success](response);
},
beforeSend: function beforeSend() {
if (_beforeSend) App[_beforeSend]();
}
});
}
};
var App = {
GetReservationData: function GetReservationData(id, calendar_id, date) {
App.calendar_id = calendar_id;
Ajax.get('ajaxGetReservationData?fromWebApp=1', 'AfterGetReservationData', {
room_id: id,
date: date
}, 'BeforeGetReservationData');
},
BeforeGetReservationData: function BeforeGetReservationData() {
$('.loader_' + App.calendar_id).hide();
$('.hidden_' + App.calendar_id).show();
},
AfterGetReservationData: function AfterGetReservationData(response) {
$('.hidden_' + App.calendar_id + " .reservation_data_room_number").html(response.room_number);
}
};
$(document).on('click', '.dropdown', function (e) {
e.stopPropagation();
});