2017-11-11 101 views
0

大家好,我想要做的第一件事就是將附加到房間表的酒店表中的數據顯示到單個列表頁面。渴望加載與Yajra Laravel的關係錯誤

我收到此錯誤

異常消息:調用未定義的方法應用程序\酒店::地圖()

RoomController.php

public function apiRoom() { 
    $hotels = Room::with('hotel'); 
    return Datatables::eloquent($hotels) 
     ->addColumn('hotel', function (Room $htl) { 
      return $htl->hotel->map(function ($hotellist) { 
        return str_limit($hotellist->hotel_name); 
       }); 
     }); 

    $rooms = Room::all(); 
    return Datatables::of($rooms) 
     ->addColumn('action', function ($rooms) { 
      return '<a onclick="editForm('.$rooms->id.')" data-toggle="tooltip" data-original-title="Edit"> <i class="fa fa-pencil text-inverse m-r-10"></i> </a>'. 
      '<a onclick="deleteData('.$rooms->id.')" data-toggle="tooltip" data-original-title="Close"> <i class="fa fa-close text-danger"></i> </a>'; 

     })->make(true); 

房-list.blade.php

var table = $('#room-table').DataTable({ 
         processing: true, 
         serverSide: true, 
         ajax: "{{ route('api.room') }}", 
         columns: [ 
         {data: 'id', name: 'id'}, 
         {data: 'hotel', name: 'hotel.hotel_name'}, 
         {data: 'room_name', name: 'room_name'}, 
         {data: 'bonus_sum', name: 'bonus_sum'}, 
         {data: 'action', name: 'action', orderable: false, searchable: false} 
         ] 
        }); 

模型文件Room.php

class Room extends Model { 
    protected $primaryKey = 'id'; 
    protected $fillable = ['hotel_id', 'room_name', 'bonus_sum']; 
    public function Hotel() { 
     return $this->belongsTo('App\Hotel', 'hotel_id'); 
    } 
} 

回答

1

Room只能屬於一個Hotel。因此,$htl->hotel是一個單一的對象,而不是一個集合,您不能在其上調用map()

+0

愛你的答案。簡短而恰到好處! –