【问题标题】:Laravel query return wrong dataLaravel 查询返回错误数据
【发布时间】:2020-11-03 00:15:10
【问题描述】:

查询:

$recent_posts = Blog::join("categories",'categories.id', '=', 'blogs.category_id')
    ->where('categories.status', 1)
    ->orderBy('blogs.id', 'desc')
    ->take(3)
    ->get();

两个表都有 created_at 列。

在前端我使用它来检索数据:

<div class="row justify-content-center">
  @foreach ($recent_posts as $recent_post)
    <div class="col-md-6 col-lg-4 latest-blog-resp">
      <div class="blog-item">
        <div class="blog-img">
          <a href="{{ url('blog/'.$recent_post->slug) }}">
            @if ($recent_post->blog_image == '')
              <img src="{{ asset('fibonacci/adminpanel/assets/img/dummy/no_image.jpg') }}" class="img-fluid round-item" alt="blog image">
            @else
              <img src="{{ asset('fibonacci/adminpanel/assets/img/blog/thumbnail1/'.$recent_post->blog_image) }}" class="img-fluid round-item" alt="blog image">
            @endif
          </a>
        </div>
        <div class="blog-inner">
          <div class="blog-meta">
            <span class="mr-2">
              <i class="mdi mdi-calendar-account-outline"></i>{{ __('frontend.by_admin')  }}
            </span>
            <span>
              <i class="mdi mdi-calendar-range"></i>{{Carbon\Carbon::parse($recent_post->created_at)->isoFormat('MMMM')}} {{Carbon\Carbon::parse($recent_post->created_at)->isoFormat('DD')}}
            </span>
          </div>
          <h5 class="blog-title">
            <a href="{{ url('blog/'.$recent_post->slug) }}">{{ $recent_post->title }}</a>
          </h5>
          <p class="blog-desc">{{ $recent_post->short_description }}</p>
          <a href="{{ url('blog/'.$recent_post->slug) }}" class="blog-more-link">
            {{ __('frontend.read_more') }} <i class="fa fa-angle-right ml-2"></i>
          </a>
        </div>
      </div>
    </div>
  @endforeach
  @if (count($recent_posts) === 3)
    <div class="col-12 text-center margin-top-30">
      <div class="btn-group">
        <a href="{{ url('blog') }}"  class="default-button">
          {{ __('frontend.view_all') }}
        </a>
      </div>
    </div>
  @endif
</div>

问题: $recent_post-&gt;created_at 返回类别表创建 (created_at) 日期,但我们希望收到作为 created_as 的博客表结果(如帖子创建数据)。

提前致谢!

【问题讨论】:

  • 使用连接时,您需要选择所需的字段并在必要时分配别名。 Laravel 在使用 join 时不能很好地处理相同的列名。

标签: laravel


【解决方案1】:

在选择子句中指定您的字段。

$recent_posts = Blog::select(
    'blogs.slug',
    'blogs.blog_image', 
    'blogs.title',
    'blogs.short_description',
    'blogs.created_at'
)
->join('categories', 'categories.id', 'blogs.category_id')
->where('categories.status', 1)
->orderByDesc('blogs.id')
->take(3)
->get();

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多