【发布时间】:2015-11-20 07:23:12
【问题描述】:
我有三个数据库表。
fb_pages、languages、fb_page_likes。
fb_pages 表保存了 facebook 页面和一些数据
+----+--------------------+-----------------+-------------------+---------------+-------------------+----------------+---------+-------------------------------------+---------------------+---------------------+
| id | page_categories_id | facebook_id | facebook_username | facebook_name | facebook_category | facebook_likes | creator | permalink | created_at | updated_at |
+----+--------------------+-----------------+-------------------+---------------+-------------------+----------------+---------+-------------------------------------+---------------------+---------------------+
| 1 | 2 | 552825254796051 | mesutoezil | Mesut Özil | Athlete | 28540064 | | https://www.facebook.com/mesutoezil | 2015-07-14 10:09:30 | 2015-08-25 16:43:35 |
+----+--------------------+-----------------+-------------------+---------------+-------------------+----------------+---------+-------------------------------------+---------------------+---------------------+
第二个表languages 包含用于检查哪个facebook_page 在哪个国家/地区拥有多少粉丝的语言
+----+----------+---------------------+---------------------+
| id | language | created_at | updated_at |
+----+----------+---------------------+---------------------+
| 1 | ID | 2015-08-25 16:38:35 | 2015-08-25 16:38:35 |
| 2 | TR | 2015-08-25 16:38:35 | 2015-08-25 16:38:35 |
+----+----------+---------------------+---------------------+
第三张表fb_page_likes 只是一个数据透视表,用于检查哪个粉丝页面在哪个国家有多少赞
+----+-------------+------------------+---------+---------------------+---------------------+
| id | language_id | facebook_page_id | likes | created_at | updated_at |
+----+-------------+------------------+---------+---------------------+---------------------+
| 1 | 1 | 1 | 3271717 | 2015-08-25 16:38:35 | 2015-08-25 16:38:35 |
| 2 | 2 | 1 | 1588001 | 2015-08-25 16:38:35 | 2015-08-25 16:38:35 |
| 3 | 3 | 1 | 1464810 | 2015-08-25 16:38:35 | 2015-08-25 16:38:35 |
+----+-------------+------------------+---------+---------------------+---------------------+
我现在想做的是获得一个 FacebookPage 并查看它在特定国家/地区有多少喜欢。
例如:我想查看使用 TR 语言的用户对 Mesut Oezil 的点赞数。
这就是我目前遇到的问题,因为我不知道如何获取这些数据。我设法获得分配给页面的所有语言,但我想获得特定页面的喜欢。
在我的模型 FacebookPage 中,我创建了一个 belongsToMany 关系
public function languages()
{
return $this->belongsToMany(Language::class, 'language_page_likes');
}
在我的Language 模型中我也这样做了
public function pages()
{
return $this->belongsToMany(FacebookPage::class, 'language_page_likes');
}
我了解到这是在 laravel 中定义多对多关系的方式。现在,与
\App\Models\FacebookPage::find(1)->languages;
我正在获取页面拥有粉丝的所有语言,但我希望获得特定国家/地区的喜欢。来自一个国家或一组国家。
我也这样尝试过
App\Models\FacebookPage::find(1)->with(['languages' => function($query){
return $query->where('language_id', 1);
}])->get()
但这不知何故现在给了我所有的 Facebook 页面,而不是 id 为 1 的页面。
另外,我想从德国获得 Mesut Oezil 的所有赞,以及来自德国、奥地利和瑞士的 Mesut Oezil 的赞。我将如何实现这一目标?
【问题讨论】:
标签: php laravel eloquent relationship laravel-5.1