我想根据存储在表中的数组中是否存在单个值来返回帖子集合。
在我的帖子表中,我有常规的列名称,如“title”、“body”和“slug”。我使用同一个表管理多个站点,因此我有一个额外的列名称“site_ids”。当用户创建帖子时,他们选择他们希望发布帖子的网站,并将网站 ID 存储为数组(例如 [1,2])
-----------------------------------------------
| Title | Site_ids | Slug |
-----------------------------------------------
| Test Title |[1,2,3] |test-title |
-----------------------------------------------
| Another Title |[1,6] |another-title |
-----------------------------------------------
现在我正在创建一个 API 来返回所有 site_id 为 1 的帖子。如何实现?这是我的 PostController 中的当前代码
API 路径
Route::get('/{site_id}/posts','PostController@index')->name('Show Posts');
代码:
public function index($site_id)
{
// Return all posts by id
$posts = Post::whereIn('sites', $site_id)->get();
return new PostCollection($posts);
}
我收到此错误消息
Invalid argument supplied for foreach()
我在这里做错了什么?
最佳答案
你可以尝试 whereRaw('JSON_CONTAINS(meta, "1")') 之类的东西。检查 command在 MySQL 中。另外,如果你在 laravel 的 5.7 中运行,你可能需要检查 this
关于php - Laravel - 通过检查数据库中数组中是否存在值来过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52485800/