我有以下功能 -
public function search_profile(Request $request)
{
$search_keyword = $request->search;
$search_user = $request->user;
$user_public = User::where('username', $request->user)->first();
$tags_list = Tag::orderBy('tag', 'asc')->get();
$bookmarks = Bookmark::orderBy('created_at','desc')->where('bookmarker', $search_user)->where('public', '1')->where('tags', 'rlike', $search_keyword)->orwhere('title', 'rlike', $search_keyword)->orwhere('description', 'rlike', $search_keyword)->orwhere('contents', 'rlike', $search_keyword)->paginate(15);
$bookmarks_all = Bookmark::orderBy('created_at','desc')->where('bookmarker', $search_user)->where('public', '1')->where('tags', 'rlike', $search_keyword)->orwhere('title', 'rlike', $search_keyword)->orwhere('description', 'rlike', $search_keyword)->orwhere('contents', 'rlike', $search_keyword)->get();
return view('profile_search')->with('bookmark', $bookmarks)->with('tags_list', $tags_list)->with('bookmarks_all', $bookmarks_all)->with('username', $user_public)->with('search_keyword', $search_keyword);
}
Run Code Online (Sandbox Code Playgroud)
但我什至从其他人那里得到了结果bookmarker。例如 - 如果$search_keyword = 'laravel'和$serach_user = 'zack'。我也从其他用户那里得到结果。
我是 Laravel 的新手。那么我在查询中做错了什么?
我在 SQL 中有这样的产品表:
productID Type Amount
1046 1 4
1046 1 5
1046 2 10
1047 1 5
1047 2 3
Run Code Online (Sandbox Code Playgroud)
如何进行查询,输出如下:
productID Type TotalTypeAmount TotalPerProductID
1046 1 9 19
1046 2 10 19
1047 1 5 8
1047 2 3 8
Run Code Online (Sandbox Code Playgroud) laravel-5.7/mysql\nRun Code Online (Sandbox Code Playgroud)\n\n在我的数据库中,我有一个如下所示的 json 格式字段:
\n\n字段名称:特征:
\n\n[\n {"id": 1, "url": null, "name": "A"}, \n {"id": 2, "url": null, "name": "B"}\n]\nRun Code Online (Sandbox Code Playgroud)\n\n同样在它的模型中,我写了这个
\n\n protected $casts = [\n \'features\' => \'array\'\n ];\nRun Code Online (Sandbox Code Playgroud)\n\n现在我创建一个数组:
\n\n$features = array();\n\ntemp = array();\ntemp[\'id\'] = 1;\ntemp[\'url\'] = null;\ntemp[\'name\'] = A;\n$features[] = temp;\n\ntemp = array();\ntemp[\'id\'] = 2;\ntemp[\'url\'] = null;\ntemp[\'name\'] = B;\n$features[] = temp;\nRun Code Online (Sandbox Code Playgroud)\n\n如何$features array 与features field 数据库中的进行比较?
\xd9\x91我检查了这些:
\n\n$fff = \\App\\Cart::whereFeatures($features)->get()->first();\nRun Code Online (Sandbox Code Playgroud)\n\n或者
\n\n$fff = …Run Code Online (Sandbox Code Playgroud) 如何使用我的模型在 Laravel Eloquent ORM 中运行此 SQL 语句?
update products set quantity = quantity + 3
Run Code Online (Sandbox Code Playgroud) 我有一个查询,我在其中使用 Eloquent 查找 ID,但我需要的是直接在 eloquent 查询中减去?与查询生成器相同,
文档代码
$flight = App\Flight::find(1);
$flight->name = 'New Flight Name';
$flight->save();
Run Code Online (Sandbox Code Playgroud)
我需要的是直接减去
$flight = App\Flight::find(1);
$flight->value =- 1;
$flight->save();
Run Code Online (Sandbox Code Playgroud) 我在 Laravel 中有这个查询:
DB::table('score')
->select('score.score_nl', DB::raw('count(*) as total'), DB::raw('round(avg(rating_results.rating)) as final_rating'))
->join('rating', 'rating.score_id', '=', 'score.id')
->join('rating_results', 'rating.rating_result_id', '=', 'rating_results.id')
->groupBy('score_nl')
->get();
Run Code Online (Sandbox Code Playgroud)
结果:
[{"score_nl":"emphatisch","total":1,"final_rating":"1"},{"score_nl":"huilen","total":2,"final_rating":"3"},{"score_nl":"knuffelig","total":1,"final_rating":"1"},{"score_nl":"zindelijkheid","total":2,"final_rating":"3"}]
Run Code Online (Sandbox Code Playgroud)
我rating_results在这个表中有一个名为(见图片)的表,我想查找final_rating并获取相关的result_en.
我怎么能在 Laravel 中做到这一点?
有任何问题请告诉我!
- 编辑 -
我试过这个;
$q = Result::select('result_nl')
->whereColumn('rating_results.rating', 'final_rating')
->whereColumn('rating_results.score_id', 'score_id')
->getQuery();
DB::table('score')
->select('score.score_nl', DB::raw('count(*) as total'), DB::raw('round(avg(rating_results.rating)) as final_rating'))
->join('rating', 'rating.score_id', '=', 'score.id')
->join('rating_results', 'rating.rating_result_id', '=', 'rating_results.id')
->selectSub($q, 'result_nl')
->groupBy('score_nl')
->get();
Run Code Online (Sandbox Code Playgroud)
但是后来我收到了这个错误:
SQLSTATE[42S22]: Column not found: 1247 Reference 'final_rating' not supported (reference to group function) …Run Code Online (Sandbox Code Playgroud) 上下文
我使用Laravel的雄辩如我的ORM.我创建了一个API端点提供访问Cars其有几个属性(color,make,status).
我的端点允许客户端通过这些属性的任何子集过滤返回值,如果它们不提供任何属性,那么我将返回所有内容.
问题
我想构建一个条件查询,它从"全部"开始,并根据指定的参数缩小.这是我写的:
public function getCars(Request $request)
{
$results = Cars::all();
if($request->has('color'))
$results = $results->where('color', $request->input('color'));
if($request->has('make'))
$results = $results->where('make', $request->input('make'));
if($request->has('status'))
$results = $results->where('status', $request->input('status'));
return $results->toJson();
}
Run Code Online (Sandbox Code Playgroud)
如果我在没有参数的情况下调用它,API将返回数据库中所有汽车的列表.但是,如果我指定(例如)0API的状态返回一个空集,尽管有些汽车的状态为0.
我接近这个错误吗?有什么根本我缺席的吗?
请注意,如果我改为:
$results = Cars::where('status', 0);
return $results->get();
Run Code Online (Sandbox Code Playgroud)
正确生成汽车列表
我想cast在查询生成器laravel中订购
因为我price是varchar类型
所以当它排序时...结果远远超出我想要的...
我的脚本是这样的
DB::table('test')->where(...)->orderBy('price')->get();
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这样的事情
$query = CAST(price AS DECIMAL(10,2)) DESC;
DB::table('test')->where(...)->orderBy($query)->get();
Run Code Online (Sandbox Code Playgroud)
如何转换OrderBy查询生成器,以便对pricedesc 进行排序
我需要根据将来发生的日期选择条目,并且
条目包含日期格式:
12/30/17
Run Code Online (Sandbox Code Playgroud)
我试图格式化日期并与Carbon :: now()时间戳进行比较,但是没有运气。
$now = \Carbon\Carbon::now();
$bookings = DB::table('booking')
->select('booking.*')
->where('booking.uid', '=', Auth::id())
->where(DB::raw("(DATE_FORMAT(booking.date,'%Y-%m-%d 00:00:00'))"), ">=", $now)
->get();
Run Code Online (Sandbox Code Playgroud) 编辑:为清楚起见,这是Laravel 5.8。
这是我正在使用的HR应用程序。
他们要求提供一份报告,以显示迟到的人。当然可以,我认为没有问题。
因此,我有一个带有一些自定义参数的表单,用户可以在其中输入以下内容:start_date,end_date,工资和一组部门。
public function show()
{
request()->validate([
'start_date' => 'required|date|before_or_equal:today'
]);
$start = Carbon::parse(request('start_date'));
$end = request('end_date') ? Carbon::parse(request('end_date')) : today();
$wage = request('wage');
$departments = request('departments');
$query = EmployeePunch::with([
'employee' => function($query) use ($wage, $departments) {
// IF I UN COMMENT THESE, IN THE FILTER BLOCK BELOW, THE EMPLOYEE BECOMES UNDEFINED.
// if($wage != null) {
// $query->where('hourly', $wage);
// }
// if($departments) {
// $query->whereIn('department_id', $departments);
// }
},
'employee.group',
'employee.department'
])
->whereBetween('punch_time', [$start->startOfDay(), $end->endOfDay()]) …Run Code Online (Sandbox Code Playgroud)