在文件夹SELECT count(*) FROM table1
上的搜索栏中,我想在表book.index.blade.php
的{{1}}或表的字段name
上进行搜索authors
。
到目前为止,我知道要在我的表code
的字段bookcases
上进行搜索。
我的问题是如何使用表name
的字段authors
进行请求?我不知道语法...
我是新手。
code
答案 0 :(得分:1)
您可以在搜索中附加更多其中有个条件,例如:
$books = Book::whereHas('authors', function($query) use($req) {
$query->where('name', 'like', '%' . $req->search . '%');
})->whereHas('bookcases', function($query) {
$query->where('code', 'like', '%' . $req->search . '%');
})->paginate(5);
如果您想在书架中搜索或作者,则可以将第二个 whereHas 更改为 orWhereHas 。>
obs :我建议您进一步了解Laravel雄辩地关联对象的方式。它具有学习曲线,但肯定会在将来有所帮助。
答案 1 :(得分:1)
看看这个Search on Eloquent Relationships
否则,您也可以使用联接来执行此操作:
Book::join('authors', 'books.fk_author', 'authors.id')
->join('bookcases', 'books.fk_bookcase', 'bookcases.id')
->where('authors.name', 'LIKE', '%'. $req->search . '%')
->select('authors.name', 'table.other_column', 'table.another_column')
->paginate(5);
添加提示,或者如果您进行多次搜索,则使用这样的方法更为可靠:
->where(function ($query) {
$query->orwhere('users.name', 'like', '%' . request('search') . '%')
->orWhere('users.id', 'like', '%' . request('search') . '%');
})
答案 2 :(得分:1)
您可以尝试以下操作:
restructuring books table to:
id
title
gender
author_id
bookcases_id
public function index(Request $req)
{
$s = $req->input('data');
$data['search']=DB::table('books')
->leftjoin('authors', 'books.author_id', '=', 'authors.id')
->leftjoin('bookcases', 'books.bookcases_id', '=', 'bookcases.id')
->where('books.id','=',$s)
-orWhere('bookcases.id','=',$s)
return view('admin.books.index', $data);
}
希望这会有所帮助。这是查询生成器。只需导入use DB;