Laravel连接表上的一元关系

时间:2015-11-19 08:11:31

标签: php mysql laravel eloquent relationship

我在Laravel 5.1上运行

目前我遇到的问题与SELECT一元关系中的Category查询有关。

我有一个id模型。它具有以下属性:parent_idnamepublic function index($parent_id = 0) { $query = Category::select('category.*'); if (\Input::get('q')) { $q = \Input::get('q'); $query->leftJoin('category as parent', 'parent.id', '=', 'category.parent_id') ->where(function($query) use($q) { $query->orWhere('category.name', 'LIKE', '%' . $q . '%') ->orWhere('parent.name', 'LIKE', '%' . $q . '%') ; }); } $query->where('parent_id', $parent_id); // update Nov 19, 2015 16:31 ... }

我想执行一个搜索功能,按类别名称父类别名称进行过滤。

我有这个查询

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'parent_id' in where clause is ambiguous (SQL: select count(*) as aggregate from `category` left join `category` as `parent` on `parent`.`id` = `category`.`parent_id` where `category`.`deleted_at` is null and (`category`.`name` LIKE %q% or `parent`.`name` LIKE %q%))

从这个脚本中,我收到了错误

...
List<String> list = null;
public BookInfoNew() {
    list = new ArrayList<String>(); //create ArrayList
}
...

知道如何将另一个别名添加到当前表(非父级)吗?

1 个答案:

答案 0 :(得分:1)

我意识到我没有在表名中添加WHERE条件。

$query->where('category.parent_id', $parent_id);

我输入category.后,现在效果很好。