【发布时间】:2020-09-08 21:50:50
【问题描述】:
我已经为我的应用程序分配了搜索方法,并且我已经在两个表“users”表和“posts”表之间建立了关系,它们都有相同的字段名称“created_at”,当我想获取这篇文章时的数据时已创建它将在用户表 created_at 字段中而不是在帖子表 created_at 字段中带来日期。 我想要的只是如何告诉系统在我的意思是哪个表字段名称之间有所不同。
ListingController.php
public function search(Request $request){
$posts = Post::with(['comments','category','creator'])
->join('users', 'posts.created_by', '=', 'users.id')
->where('slug', 'LIKE', '%'.$request->search. '%')
->orWhere('users.name', 'LIKE', '%'.$request->search. '%')
->where('status',1)->orderBy('posts.id','DESC')->paginate(5);
return view('front.listing',compact('posts'));
}
listing.blade.php
<div class="article_date">
by: <a href="{{ url('/author') }}/{{ $post->creator->id }}">{{ $post->creator->name }} </a> , {{$post->created_at->diffForHumans()}}
</div>
【问题讨论】:
-
1.既然您已经拥有获取相同数据的
creator关系,为什么还要加入用户? 2.您可以使用$post->creator->created_at->diffForHumans() -
如果我不加入它我会给出这个错误``` SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.name' in 'where clause' (SQL: select count (*) 作为来自
posts的聚合,其中slugLIKE %interesting% 或users.nameLIKE %interesting% 和status= 1) ``` -
您可以在关闭关系的情况下运行条件(但这将是另一个问题????)
-
然后在您的查询中添加
->select('posts.*')
标签: php laravel laravel-5.8