использование функции ownTo () выдает ошибку «Попытка получить свойство необъекта»

Итак, у меня есть эти отношения, определенные в holiday модель для доступа к holiday_type модель.

MHoliday модель:

use Arkitecht\Attributions\Traits\Attributions;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class MHoliday extends Model
{
use Attributions;
use SoftDeletes;

protected $dates = ['deleted_at'];
protected $table = 'm_holiday';

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'holiday_name',
'holiday_date',
'holiday_type_id',
'office_id',
'public_holiday_flag'
];

public function holidayType()
{
return $this->belongsTo('App\MHolidayType', 'holiday_type_id');
}

public function officeName()
{
return $this->belongsTo('App\MOffice', 'office_id');
}
}

Модель MHolidayType:

namespace App;

use Arkitecht\Attributions\Traits\Attributions;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class MHolidayType extends Model
{
use Attributions;
use SoftDeletes;

protected $dates = ['deleted_at'];
protected $table = 'm_holiday_type';

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'holiday_type_name'
];
}

Модель moffice:

namespace App;

use Arkitecht\Attributions\Traits\Attributions;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class MOffice extends Model
{
use Attributions;
use SoftDeletes;

protected $dates = ['deleted_at'];
protected $table = 'm_office';

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'office_name',
'office_authority_id',
'note',
'first_name',
'employee_authority_id',
'note',
];
}

Затем я пытаюсь показать результат как:

<tr>
<td>{{ $item->officeName->office_name }}</td>
<td>{{ $item->holidayType->holiday_type_name}}</td>
</tr>

Имя Office дает мне результат, но тип праздника выдает ошибку «Попытка получить свойство необъекта». Чего может не хватать?

Обновить

На мой взгляд, это отчасти так:

@foreach($holiday as $item)
<tr>
<td><input type="checkbox" class="items-selected" value="{{ $item->id }}"></td>
<td>{{ $item->id }}</td>
<td>{{ $item->holiday_name }}</td>
<td>{{ $item->holidayType->holiday_type_name }}</td>

<td>{{ $item->officeName->office_name }}</td>
<td>{{ $item->public_holiday_flag }}</td>
@endforeach

В контроллере Holiday:

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\MHoliday;
use App\MOffice;
use App\MHolidayType;
use Illuminate\Http\Request;
use Carbon\Carbon;

class HolidayController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\View\View
*/
public function index(Request $request)
{
$keyword = $request->get('holiday');
$getSearchby = $request->searchby;
$perPage = 25;

if ($keyword) {
$holiday = MHoliday::join('m_office', 'm_office.id', '=', 'm_holiday.office_id')
->where('m_office.office_name', 'like', '%'.$keyword.'%')
->paginate($perPage);
} else {
$holiday = MHoliday::paginate($perPage);
}

return view('holiday.index', compact('holiday','searchby','getSearchby'));
}
}

0

Решение

Сначала вы должны попытаться отладить результат для вашей коллекции, потому что это исключение приводит к тому, что ваша таблица

m_holiday_type

нет записей, которые соответствуют отношению.

сделайте это в вашем контроллере до того, как return view :

dd($holidays);

и скажи покажи мне результат пожалуйста.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]