Laravel

LaravelのUnionはカラム数を元テーブルと同じにしないとエラーになる

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

⇨ Laravel 記事の目次はこちら

Laravel の Union はカラム数を元テーブルと同じにしないとエラーになるので解決方法を記事にしました。

どんなエラーがでるか

SQLSTATE[21000]: Cardinality violation: 1222 The used SELECT statements have a different number of columns (SQL: (select `title`, `created_at` from `posts` where `title` is not null) union (select `title` from `items`))

こんなエラーがでます。

解決する方法

エラー文には、「異なる数のカラムが存在しています」とあります。

ですので、同じ数のカラムを select してあげればこのエラーは解決できると思います。

  use App\Models\Item;
  use App\Models\Post;

~~~
public function index()
{
  $items = Item::select('title','created_at');
  $results = Post::select('title','created_at')
      ->union($items)
      ->get();
  dd($results);
}

まとめ

以上です。

Laravel で Union を使った時に出たエラーについて記事にしてみました。

誰かの参考になればと思います。

感想・苦情は TwitterDM にご連絡ください。

それでは!

人気記事

PHP7.4 + Laravel6 のプロジェクトを AWS EC2 にデプロイする

【laravel-breadcrumbs】Laravel でパンくずリストを実装する