Laravel 从关系的关系 table 和 select 列获取数据?
Laravel Get data from relationship's relationship table and select column?
我有 3 table
用户Table
+----+-------+----------+
| id | email | password |
+----+-------+----------+
| 1 | 1 | John |
+----+-------+----------+
user_details Table
+----+--------------------+------------+-----------+
| id | user_id [FK_users] | first_name | last_name |
+----+--------------------+------------+-----------+
| 1 | 1 | John | Kevin |
+----+--------------------+------------+-----------+
帖子Table
+----+--------------------+----------+
| id | user_id [FK_users] | title |
+----+--------------------+----------+
| 1 | 1 | 1st Post |
+----+--------------------+----------+
现在我已经在模型中创建了所有关系,现在我可以通过下面的方式访问 user_details table eloquent 查询它 returns 整个用户 table 和 user_details table 但我只想从 user_details table select first_name 和 last_name 我该怎么做?
$posts= Post::with('city:id,name_en', 'user.userDetail')->where('id', $id)->get();
这将获取所有 'post' 属性,'user' id
,'user_details' user_id, first_name, last_name
$posts= Post::with([
'city:id,name_en',
'user' => function ($query) {
$query->select('id');
},
'user.userDetail' => function($query) {
$query->select(['user_id', 'first_name', 'last_name']);
}
])->where('id', $id)->get();
我有 3 table
用户Table
+----+-------+----------+
| id | email | password |
+----+-------+----------+
| 1 | 1 | John |
+----+-------+----------+
user_details Table
+----+--------------------+------------+-----------+
| id | user_id [FK_users] | first_name | last_name |
+----+--------------------+------------+-----------+
| 1 | 1 | John | Kevin |
+----+--------------------+------------+-----------+
帖子Table
+----+--------------------+----------+
| id | user_id [FK_users] | title |
+----+--------------------+----------+
| 1 | 1 | 1st Post |
+----+--------------------+----------+
现在我已经在模型中创建了所有关系,现在我可以通过下面的方式访问 user_details table eloquent 查询它 returns 整个用户 table 和 user_details table 但我只想从 user_details table select first_name 和 last_name 我该怎么做?
$posts= Post::with('city:id,name_en', 'user.userDetail')->where('id', $id)->get();
这将获取所有 'post' 属性,'user' id
,'user_details' user_id, first_name, last_name
$posts= Post::with([
'city:id,name_en',
'user' => function ($query) {
$query->select('id');
},
'user.userDetail' => function($query) {
$query->select(['user_id', 'first_name', 'last_name']);
}
])->where('id', $id)->get();