【发布时间】:2019-03-16 04:45:06
【问题描述】:
我有 Eloquent 模型 User 与关系 languages
class User extends Model {
// ... some code
public function languages()
{
return $this->belongsToMany(Language::class);
}
}
我的多对多关系迁移数据透视表
public function up()
{
Schema::create('language_user', function (Blueprint $table) {
$table->unsignedInteger('user_id');
$table->unsignedInteger('language_id');
$table->primary(['user_id', 'language_id']);
});
}
在控制器中,我尝试获取我的用户
class UserController extends Controller
{
public function show(User $user)
{
return response()->success($user->with('languages')->get());
}
}
但不幸的是,我得到的不是一个用户,而是 Users 的结果数组 我怎样才能只用他的语言查询一个用户记录?
【问题讨论】:
-
你可以使用
pluck()return response()->success($user->with('languages')->pluck()); -
数组是否包含多个用户?
-
@TimSch 是的。是的,这就是问题
-
我记得只有集合需要 get() 方法。您访问单个用户,此处不需要 get()。没有它你会得到什么?
-
您可以使用
load懒加载语言relations:$user->load('languages');
标签: laravel laravel-5 eloquent