【问题标题】:Fetch data from same field name in two different tables and detect which filed name we mean从两个不同表中的相同字段名中获取数据并检测我们指的是哪个字段名
【发布时间】:2020-09-08 21:50:50
【问题描述】:

我已经为我的应用程序分配了搜索方法,并且我已经在两个表“users”表和“posts”表之间建立了关系,它们都有相同的字段名称“created_at”,当我想获取这篇文章时的数据时已创建它将在用户表 created_at 字段中而不是在帖子表 created_at 字段中带来日期。 我想要的只是如何告诉系统在我的意思是哪个表字段名称之间有所不同。

此日期来自 users 表中 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-&gt;creator-&gt;created_at-&gt;diffForHumans()
  • 如果我不加入它我会给出这个错误``` SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.name' in 'where clause' (SQL: select count (*) 作为来自posts 的聚合,其中slug LIKE %interesting% 或users.name LIKE %interesting% 和status = 1) ```
  • 您可以在关闭关系的情况下运行条件(但这将是另一个问题????)
  • 然后在您的查询中添加-&gt;select('posts.*')

标签: php laravel laravel-5.8


【解决方案1】:

您不正确地称呼您的关系。你不应该在那里使用连接。请改用constrained eager loading

created_at 日期不会有冲突,因为不会有加入。 同时仍将您的搜索查询保持在关系的封闭范围内。

        $posts = Post::with(['comments', 'category'])
            ->with(['creator' => function ($query) use ($request) {
                $query->where('name', 'LIKE', '%' . $request->search . '%');
            }])
            ->where('slug', 'LIKE', '%' . $request->search . '%')
            ->where('status', 1)
            ->orderBy('id', 'DESC')
            ->paginate(5);

【讨论】:

  • 我想在帖子表而不是用户表中获取日期
  • 错误 mb_strpos() 期望参数 1 是字符串,给定对象
  • 我已经修改了您发送的代码。 C:\xampp\htdocs\project\news\vendor\laravel\framework\src\Illuminate\Support\Str.php
  • 我有,但我找不到作者的名字
猜你喜欢
  • 2011-02-08
  • 2017-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多