2014-11-25 69 views
0

我有一个Users表,一个Images表和一个Bookmarks表。我已经为我的数据库中的每个人指定了关系,并且我可以访问用户上传的所有图片。不过,我无法访问他们已添加书签的图片。

这是我的数据库中的关系是这样的: Database

我能访问我想使用上的phpMyAdmin的SQL输入数据,但是我不能使用Laravel时: SQL

使用Laravel产量这个错误: Error

这是我的用户模型:

<?php 
use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableInterface; 
use Cartalyst\Sentry\Users\Eloquent\User as SentryUserModel; 

class User extends SentryUserModel implements UserInterface, RemindableInterface { 

    public $activated = true; 

    public function getAuthIdentifier() { 
     return $this->getKey(); 
    } 

    public function getAuthPassword() { 
     return $this->password; 
    } 

    public function getRememberToken() { 
     return $this->remember_token; 
    } 

    public function setRememberToken($value) { 
     $this->remember_token = $value; 
    } 

    public function getRememberTokenName() { 
     return 'remember_token'; 
    } 

    public function getReminderEmail() { 
     return $this->email; 
    } 

    public function images() { 
     return $this->hasMany('image', 'poster_id', 'id'); 
    } 

    public function bookmarks() { 
     return $this->hasMany('bookmark', 'bookmarker_id', 'id'); 
    } 

} 

这是我的图片型号:

<?php 

class Image extends Eloquent { 

    public function poster() { 
     return $this->belongsTo('user', 'poster_id', 'id'); 
    } 

} 

这是我的书签模型:

<?php 

class Bookmark extends Eloquent { 

    public $timestamps = false; 

    public function bookmarker() { 
     return $this->belongsTo('user', 'bookmarker_id', 'id'); 
    } 

    public function image() { 
     return $this->hasOne('image', 'image_id', 'id'); 
    } 

} 

这是在其中抛​​出的错误观点:

@extends('master') 

@section('content') 
<!-- Page Content --> 
<header class="navbar navbar-inverse" role="navigation"> 
    <div class="container"> 
     <div class="navbar-header"> 
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse"> 
       <span class="sr-only">Toggle Navigation</span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
       <span class="icon-bar"></span> 
      </button> 
      <a href="/" class="navbar-brand">Egami</a> 
     </div> 
     <div class="collapse navbar-collapse"> 
      <ul class="nav navbar-nav navbar-right"> 
       @if(!Sentry::check()) 
       <li> 
        <a href="#" data-toggle="modal" data-target="#login-modal">Login</a> 
       </li> 
       <li> 
        <a href="#" data-toggle="modal" data-target="#signup-modal">Signup</a> 
       </li> 
       @endif 
       @if(Sentry::check()) 
       @if(Sentry::getUser()->id == $user->id) 
       <li class="active"> 
       @else 
       <li> 
       @endif 
        <a href="/profile/{{ Sentry::getUser()->id }}">Profile</a> 
       </li> 
       <li> 
        <a href="/logout">Logout</a> 
       </li> 
       @endif 
      </ul> 
     </div> 
    </div> 
</header> 
<div class="container" id="profile"> 
    <div class="row"> 
     <div class="tac col-md-3"> 
      <img src="/img/{{ $user->profile_image }}" alt="{{ $user->username }}'s Profile Image"> 
     </div> 
     <div class="tal col-md-8"> 
      <h2>{{ $user->username }}</h2> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-md-12"> 
      <div class="navbar navbar-inverse" role="navigation"> 
       <ul class="nav navbar-nav navbar-center"> 
        <li> 
         <a href="{{ URL::action('[email protected]', $user->id) }}">Uploaded Images</a> 
        </li> 
        <li class="active"> 
         <a href="{{ URL::action('[email protected]', $user->id) }}">Bookmarked Images</a> 
        </li> 
       </ul> 
      </div> 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-md-12"> 
      <div class="row"> 
       <?php 
        $bookmarks = $user->bookmarks()->orderBy('id', 'DESC')->simplePaginate(15); 
       ?> 
       @foreach($bookmarks as $bookmark) 
        <div class="col-md-4 user-image"> 
         <a href="{{ URL::action('[email protected]', $bookmark->image()->id) }}"> 
          <img src="/uimg/{{ $bookmark->image()->id }}.png" alt="{{ $bookmark->image()->title }}"> 
         </a> 
        </div> 
       @endforeach 
      </div> 
      <div class="row"> 
       <div class="container"> 
        {{ $bookmarks->links() }} 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<footer class="navbar-fixed-bottom"> 
    <div class="container"> 
     <p> 
      Copyright &copy; Egami {{ date('Y') }} 
     </p> 
    </div> 
</footer> 
@stop 

@section('scripts') 

@stop 

回答

7

尝试这个:

<a href="{{ URL::action('[email protected]', $bookmark->image->id) }}"> 
    <img src="/uimg/{{ $bookmark->image->id }}.png" alt="{{ $bookmark->image->title }}"> 
</a> 

删除括号$ bookmark-> image() - > id到$ bookmark-> image-> id。

+0

是的。该函数本身获取关系。该属性获取关系的结果。 +1。 – ceejayoz 2014-11-25 14:49:02