2013-03-17 2 views
0

Я пытаюсь показать фрагмент кода и в то же время отображать комментарии, которые вы можете сделать для фрагментов (я вызываю код фрагментов). Но у меня возникли проблемы с просмотром имени пользователя, который сделал каждый комментарий. Я ожидаю, что каждый пользователь, когда я позвоню with(array('user', 'comments', 'comments.user')), но я просто получаю необработанное исключение.«Необработанное исключение: создание объекта по умолчанию из пустого значения»

//Models 
class Code extends Eloquent 
{ 
    public function user() { 
     return $this->belongs_to('User'); 
    } 

    public function comments() { 
     return $this->has_many('Comment'); 
    } 
} 

class Comment extends Eloquent 
{ 
    public function user() { 
     $this->belongs_to('User'); 
    } 

    public function code() { 
     $this->belongs_to('Code'); 
    } 
} 

class User extends Eloquent 
{ 
    public function codes() { 
     return $this->has_many('Code'); 
    } 

    public function comments() { 
     return $this->has_many('Comment'); 
    } 
} 
//Controller 
    public function get_show($id) 
    { 
     //$code = Code::with(array('user', 'comments'))->where_slug($id)->first(); 
     //$comments = Comment::with(array('user'))->where_code_id($id)->get(); 
     $code = Code::with(array('user', 'comments', 'comments.user'))->where_slug($id)->first(); 
     dd($code); 
     //return View::make('code.show')->with(array('code' => $code)); 
    } 

//View 
    <h2>{{ $code->title }}</h2> 
    @include('code.controls') 
    <p>Syntax: {{ $code->syntax}} </p> 
    <p><pre class="prettyprint linenums"><code class="language-{{ $code->syntax }}">{{ $code->content }}</code></pre></p> 
    @foreach($code->comments as $comment) 
     <div class="comment"> 
     <p><a href="">#{{ $comment->id }}</a></p> 
     {{ User::find($comment->user_id)->first()->name }} 
     <p>{{ $comment->body }}</p> 
     </div> 
    @endforeach 

//Message when trying to view 
Unhandled Exception 
Message: 

Creating default object from empty value 

Location: 

/home/victor/Projects/check-my-code/laravel/database/eloquent/query.php on line 167 

Stack Trace: 

#0 /home/victor/Projects/check-my-code/laravel/laravel.php(40): Laravel\Error::native(2, 'Creating defaul...', '/home/victor/Pr...', 167) 
#1 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(167): Laravel\{closure}(2, 'Creating defaul...', '/home/victor/Pr...', 167, Array) 
#2 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(140): Laravel\Database\Eloquent\Query->load(Array, 'user', NULL) 
#3 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(74): Laravel\Database\Eloquent\Query->hydrate(Object(Comment), Array) 
#4 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(186): Laravel\Database\Eloquent\Query->get() 
#5 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(140): Laravel\Database\Eloquent\Query->load(Array, 'comments', NULL) 
#6 /home/victor/Projects/check-my-code/laravel/database/eloquent/query.php(74): Laravel\Database\Eloquent\Query->hydrate(Object(Code), Array) 
#7 /home/victor/Projects/check-my-code/application/controllers/codes.php(31): Laravel\Database\Eloquent\Query->get() 
#8 [internal function]: Codes_Controller->get_show('testar-snippets') 
#9 /home/victor/Projects/check-my-code/laravel/routing/controller.php(325): call_user_func_array(Array, Array) 
#10 /home/victor/Projects/check-my-code/laravel/routing/controller.php(285): Laravel\Routing\Controller->response('show', Array) 
#11 /home/victor/Projects/check-my-code/laravel/routing/controller.php(165): Laravel\Routing\Controller->execute('show', Array) 
#12 /home/victor/Projects/check-my-code/laravel/routing/route.php(153): Laravel\Routing\Controller::call('[email protected]', Array) 
#13 /home/victor/Projects/check-my-code/laravel/routing/route.php(124): Laravel\Routing\Route->response() 
#14 /home/victor/Projects/check-my-code/laravel/laravel.php(125): Laravel\Routing\Route->call() 
#15 /home/victor/Projects/check-my-code/public/index.php(34): require('/home/victor/Pr...') 
#16 {main} 

ответ

1

Методы в классе В комментарии отсутствуют операторы возврата.

class Comment extends Eloquent 
{ 
    public function user() { 
     $this->belongs_to('User'); 
    } 

    public function code() { 
     $this->belongs_to('Code'); 
    } 
} 

Должно быть

class Comment extends Eloquent 
{ 
    public function user() { 
     return $this->belongs_to('User'); 
    } 

    public function code() { 
     return $this->belongs_to('Code'); 
    } 
} 

получил помощь от темы на форумах Laravel: http://forums.laravel.io/viewtopic.php?id=6266

+1

Хорошо ** Поймайте **! –

 Смежные вопросы

  • Нет связанных вопросов^_^