您好我是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());
哪里可能有问题。我认为这很容易解决
答案 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();