Я новичок в Laravel, и с помощью Laravel 5 у меня возникли проблемы с возвратом массива из моей базы данных.Laravel 5 - Как мне вернуть отношения oneToMany?
У меня есть несколько «актов», и каждый акт имеет много «баннеров». Всякий раз, когда я пытаюсь получить вывод из своего массива баннеров ($ act-> banners-> count()), я нахожу, что он выдает ошибку, потому что он равен нулю.
Вот код:
routes.php:
Route::model('banners', 'Banner');
Route::model('acts', 'Act');
// Controller routes
Route::resource('acts', 'sf_ActController');
Route::resource('acts.banners', 'sf_BannerController');
Route::bind('banners', function($value, $route) {
return App\Banner::whereact_id($value)->first();
});
Route::bind('acts', function($value, $route) {
return App\Act::whereact_id($value)->first();
});
Act.php (модель)
namespace App;
use Illuminate\Database\Eloquent\Model;
class Act extends Model
{
protected $table = 'sf_act';
protected $primaryKey = 'act_id';
public function act() {
return $this->hasMany('Banner');
}
}
Banner.php (модель)
namespace App;
use Illuminate\Database\Eloquent\Model;
class Banner extends Model
{
protected $table = 'sf_banner';
protected $primaryKey = 'banner_id';
public function banner() {
return $this->belongsTo('Act' , 'act_id' , 'act_id');
}
}
sf_ActController.php (контроллер)
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Act;
use App\Banner;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Input;
use Redirect;
class sf_ActController extends Controller
{
public function show(Act $act)
{
//pass object to correct view
return view('pages.acts.show' , compact('act'))->with('banner', Banner::find($act));
}
акты/show.blade.php (вид)
<!-- /resources/views/acts/show.blade.php -->
@extends('app')
@section('content')
<h2>{{ $act->act_title }}</h2>
{{ $act->banners->count() }}
на данный момент я получаю следующее сообщение об ошибке:
FatalErrorException in a03036ad81fb4e6d90e9fe5e3da62c65 line 7: Call to a member function count() on null
Почему я не забирающий свои данные баннерной !? (Переменная title в тегах h2 выводится нормально, поэтому db и все до этой точки работают.) Спасибо.
Спасибо, вы абсолютно правы! Была также еще одна проблема, на которую был указан ответ ниже, функция с неправильным именем ... как только эти две вещи были исправлены, она отлично работала!Я не мог бы сделать это без вашей помощи! – Leon
Отлично! Я рад, что это помогает. С наилучшими пожеланиями. – JuanDMeGon