Laravel 4 - 查找方法获取所有数据

时间:2015-08-08 14:43:12

标签: laravel model-view-controller laravel-4 orm eloquent

我不知道为什么或如何解决这个问题,但每当我使用Profile :: find($ id)时,它都会返回所有数据,而不是我想要的项目。

我无法找到原因。

模型

class Profile extends Eloquent 
{
    public static $rules = array(
        'first_name'        => array('required', 'alpha', 'min:3'),
        'last_name'         => array('required', 'alpha', 'min:3'),
        'date_of_birth'     => array('date'),
        'telephone'         => array('digits'),
        'gender'            => array('required', 'alpha', 'in:Male,Female')
    );

    protected $fillable = ['first_name', 'last_name', 'date_of_birth', 'gender'];

    protected $guarded = ['id'];

    public function user() 
    {
        return $this->belongsTo('User');
    }

    public function attributes() 
    {
        return $this->belongsToMany('Attribute', 'profile_attributes', 'profile_id', 'attribute_id')
                    ->withPivot('attribute_value_id');
    }

    public function values() 
    {
        return $this->belongsToMany('AttributeValue', 'profile_attributes', 'profile_id', 'attribute_value_id')
                    ->withPivot('attribute_id');
    }
}

控制器

public function show($id) 
{
    $data['profile'] = Profile::find(11)->get()->toArray();
    return View::make('profile.show', $data);
}

结果

array (size=2)
  0 => 
    array (size=14)
      'id' => int 10
      'user_id' => int 1
      'first_name' => string 'Richard' (length=7)
      'last_name' => string 'Skinner' (length=7)
      'date_of_birth' => string '1980-01-01' (length=10)
      'bio' => string 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis tempor pellentesque bibendum. Vestibulum congue est non imperdiet varius. Morbi a nunc nec nulla euismod sodales. Morbi id maximus sem. Proin tempor molestie feugiat. Ut pharetra felis quis erat sagittis volutpat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris fermentum vitae nisi vel varius. Proin sagittis varius placerat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

Donec tinci'... (length=2043)
      'telephone' => null
      'gender' => string 'male' (length=4)
      'profile_picture' => string 'IMG_0005.JPG' (length=12)
      'latitude' => null
      'longitude' => null
      'created_at' => string '2015-05-02 16:35:51' (length=19)
      'updated_at' => string '2015-05-20 18:52:51' (length=19)
      'deleted_at' => null
  1 => 
    array (size=14)
      'id' => int 11
      'user_id' => int 2
      'first_name' => string 'Sydney' (length=6)
      'last_name' => string 'Nouch' (length=5)
      'date_of_birth' => string '0000-00-00' (length=10)
      'bio' => string 'I need a bio' (length=12)
      'telephone' => null
      'gender' => string 'female' (length=6)
      'profile_picture' => string 'Sunflower.gif' (length=13)
      'latitude' => null
      'longitude' => null
      'created_at' => string '2015-07-21 18:01:22' (length=19)
      'updated_at' => string '2015-07-21 18:14:30' (length=19)
      'deleted_at' => null

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我想我已经找到答案,但不确定为什么会发生这种行为。但是这里......

使用find时,您可以调用

  

指定者

只获得所需结果的方法。

这是我不明白的,也许有些人可以澄清原因。当你打电话给

  

获取

方法它从模型中获取所有数据,这就是我做错了。

所以我的最后一段代码如下

  

$ data ['个人资料'] =个人资料::('属性') - > find($ id) - > toArray();

希望能帮助别人不浪费一天。