【问题标题】:Laravel 5.2 Filter Lists by user or Show all lists from User with EloquentLaravel 5.2 按用户过滤列表或使用 Eloquent 显示来自用户的所有列表
【发布时间】:2016-06-10 12:54:28
【问题描述】:

好吧,我是 Laravel 的新手,我想在我的控制器中执行一个函数,它返回一个包含一个用户的所有列表的 JSON,我想通过电子邮件过滤用户,这不是主键,但是我在这里遇到了很多问题,而 laravel 的文档对此没有任何解释。

好的,所以我有一个具有此属性和关系的类用户:

用户.php

protected $fillable = [
    'nom', 'email', 'password', 'data_de_naixament', 'sexe', 'type', 'imatge_usr', 'codi_postal'
];

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

还有一个班级列表:

List.php

protected  $fillable = ['nom_llista', 'id_user'];

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

所以我知道我必须做一个 JOIN 并将输入参数与 User 表的电子邮件列进行比较,但我无法得到它,因为他们根本不懂 eloquent 的语法。

我可以做一个存储所有列表然后通过电子邮件过滤的功能,但如果我有 2000 个列表,那么这不是有效的。

希望您能帮助我,并为我糟糕的英语感到抱歉。

【问题讨论】:

  • 如果您执行$user->whereEmail('email@example.com')->first()->lists(),您将获得该用户的所有列表。这是你想要做的吗?
  • 根本没用,“data”返回null,但下面的答案已经奏效了,还是谢谢!!

标签: laravel join filter eloquent foreign-key-relationship


【解决方案1】:

你应该阅读文档

要检索信息:https://laravel.com/docs/5.1/eloquent#retrieving-multiple-models

要将集合转换为 json:https://laravel.com/docs/5.1/collections#method-tojson

加入模型: https://laravel.com/docs/5.1/eloquent-relationships#querying-relations

换句话说,你的代码可能是这样的

$users = User::where('email', $emailYouAreLookingFor)->with('lists')->get()->toJson();

【讨论】:

  • 它可以工作,但我的名字 id_user 有问题,我将名字改为 user_id,现在可以工作了,谢谢!!
  • 很好,但不是必须的,你可以指定外键和本地键的名称laravel.com/docs/5.1/… [return $this->hasMany('App\Comment', 'foreign_key', ' local_key');]
猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2013-01-08
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
相关资源
最近更新 更多