Laravel Eloquent关系问题

时间:2016-01-06 21:28:40

标签: php laravel

您好我是laravel的新手。我正在尝试建立两个表之间的关系。

我的控制器中的方法

public function show()
    {
        $users = users::all();
        dd($users->art);
        die;
        return View('test')->with('ime');
    }

用户模型

namespace App;

use Illuminate\Database\Eloquent\Model;
use App\Articles;

class users extends Model
{
    protected $fillable =['name','email','password'];
    public function  setNameAttribute($data)
    {
         $this->attributes['name'] = strtolower($data).'Duca';
    }

    public function scopeNametor($query)
    {
        $query->where('name','ero');
    }

    public function art()
    {
       return $this->hasMany('App\Articles');  
    }
}

文章模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Articles extends Model
{
    public function users()
    {
        return $this->belongsTo('App\users');  
    }
}

我设置了外键

user.id to articles.user_id

我也在articles.user_id字段中添加索引。

但我得到错误

Undefined property: Illuminate\Database\Eloquent\Collection::$art

不知何故,laravel不承认艺术作为方法,而是将其视为财产。我做错了什么。我试着像这样但没有运气

dd($users->art()-get()->toArray());

哪里可能有问题。我认为这很容易解决

2 个答案:

答案 0 :(得分:0)

这是Laravel Docs中所述的预期行为:

  

一旦定义了关系,我们就可以使用Eloquent的动态属性来检索相关记录。动态属性允许您访问关系函数,就好像它们是在模型上定义的属性

一样

Laravel - Eloquent: Relationships

给出的例子:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

要访问电话关系:

$phone = User::find(1)->phone;

答案 1 :(得分:0)

是的我发现错误你无法使用$ users = users :: all();它将返回整个集合尝试这样的$users = users::first();