我有两张如下表:
users
表:
id - fname - lname
users_projects
表:
id - user_id - title
我的模型位于名为Models
的目录中:
Users
型号:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
//
public function usersProjects()
{
return $this->belongsTo(UsersProjects::class);
}
}
UsersProjects
型号:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UsersProjects extends Model
{
protected $table = 'users_projects';
//
public function users()
{
return $this->hasOne(Users::class);
}
}
现在,我想展示最后的项目:
$projects = UsersProjects::limit(10)->offset(0)->get();
var_dump($projects);
return;
但我的var_dump
显示了最后的项目!我希望fname
和lname
!我哪里错了?
答案 0 :(得分:1)
我认为你的关系可能有点错误。如果用户可以在您的用户模型中拥有多个项目...
public function usersProjects()
{
return $this->hasMany(UsersProjects::class);
}
您可能也希望使用更简单的命名...
public function Projects()
{
return $this->hasMany(UserProject::class);
}
(或者只是项目,如果你没有任何其他"项目"模型)
你的"项目"上课......
public function User()
{
return $this->belongsTo(User::class);
}
(假设您将模型重命名为User而不是" Users"。您的表名应该是"用户"但模型本质上是一个单一的对象。所以它'适合称之为"用户" - 您的UsersProjects模型应该只是UserProject或只是Project)
现在,如果你将方法称为" User"你将不得不添加外键名称......
public function SomeOtherName()
{
return $this->belongsTo(User::class, 'user_id');
}
然后......
$projects = Project::with('User')->limit(10)->offset(0)->get();
将返回用户急切加载的项目集合。 (假设您已将UsersProjects模型重命名为" Project")
@foreach($projects as $project)
...
First Name: {{ $project->User->fname }}
...
@endforeach
答案 1 :(得分:0)
你能指定表之间的关系吗? (一对一,一对多)乍一看,我认为这种关系是错误的