【发布时间】:2016-11-10 11:23:05
【问题描述】:
我有 3 个表用户、文章和元数据。我已经根据 laravel 5.3 文档定义了 morphTo() 和 morphToMany(),我可以提取 metas 表中定义的用户或文章的任何特定属性,例如名字或姓氏或坐标。
现在很难编写正确的模型来搜索这些属性,例如搜索任何用户的名字或姓氏或两者兼而有之。
<u>User table</u>
id. username. password
1. Test. Testpass
<u>article</>
id. Title. Slug
1. My article title. my-article-title
元表
Id. key. value. metable_id metable_type
1 firstname Ade 1 App\User
2. content. Sample article 1. App\Article
3. lastname. Keon. 1. App\User
Meta.php 提取
public function metable() {
return $this->morphTo();
}
User.php 提取
public function meta() {
return $this->morphToMany('App\User', 'metable');
}
public function getName() {
$user = User::find($this->id);
$metadata = $user->meta()->whereIn('key', ['firstname', 'lastname']) ;
dd($metadata);
}
Article.php 提取
public function meta() {
return $this->morphToMany('App\User', 'metable');
}
getName 函数按预期工作,但与传统的 php/mysql 表连接不同,我不知道如何搜索用户元数据
不知道 laravel 中的整个多态关系对我来说是新的,但我发现并使用了类似的东西:
public function getSearch() {
return User::with(array('metas' => function($query) {
$query->where('value', $query);
}));
}
或
public function getSearch() {
return User::with('metas')
->whereHas('metas', function($query) {
$query->where('value', '=', $query);
});
}
我看不到或无法解释如何在 laravel 中加入表格
这是我的新搜索查询
public function getResults(Request $request) {
$keyword = $request->input('query');
$filterOne = $request->input('minAge');
$filterTwo = $request->input('maxAge');
$query = User::with(['meta' => function ($q) {
$q->where('value', 'like', $keyword)
->orWhere(function ($q) {
$q->whereBetween('value', [$filterOne,$filtertwo]);
});
}])->get();
dd($query);
}
【问题讨论】:
-
请描述您尝试了哪些方法,哪些方法无效。
-
显示您的数据库架构和您的关系。
-
@TheFallen 我已按照建议更新了问题
-
@sitechum 如何搜索用户元数据是什么意思?请描述您期望得到的最终结果。
-
大家晚上好,我仍然需要帮助,我希望问题足够清楚
标签: laravel-5 eloquent metadata meta polymorphic-associations