{"id":27465,"date":"2024-03-16T08:31:18","date_gmt":"2024-03-16T08:31:18","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/"},"modified":"2024-03-22T11:06:16","modified_gmt":"2024-03-22T11:06:16","slug":"how-to-perform-a-join-query-with-multiple-tables-in-laravel","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/","title":{"rendered":"How to perform a join query with multiple tables in Laravel?"},"content":{"rendered":"<p>In Laravel, you can use Eloquent ORM to perform a multi-table joint query.<\/p>\n<p>Assuming we have two tables, one being the users table and the other being the posts table. The users table stores information about users, while the posts table stores the posts that users have published.<\/p>\n<p>We can create two models, one is the User model and the other is the Post model. In the User model, we can establish a relationship with the Post model.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Model<\/span>\r\n<\/span>{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">posts<\/span>(<span class=\"hljs-params\"><\/span>)\r\n    <\/span>{\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable language_\">$this<\/span>-&gt;<span class=\"hljs-title function_ invoke__\">hasMany<\/span>(<span class=\"hljs-title class_\">Post<\/span>::<span class=\"hljs-variable language_\">class<\/span>);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the Post model, we can define the relationship with the User model.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Post<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title\">Model<\/span>\r\n<\/span>{\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">user<\/span>(<span class=\"hljs-params\"><\/span>)\r\n    <\/span>{\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-variable language_\">$this<\/span>-&gt;<span class=\"hljs-title function_ invoke__\">belongsTo<\/span>(<span class=\"hljs-title class_\">User<\/span>::<span class=\"hljs-variable language_\">class<\/span>);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Now, we can use these two models to perform a joint query. For example, if we want to retrieve all users and their posted posts, we can use the following code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-variable\">$users<\/span> = <span class=\"hljs-title class_\">User<\/span>::<span class=\"hljs-title function_ invoke__\">with<\/span>(<span class=\"hljs-string\">'posts'<\/span>)-&gt;<span class=\"hljs-title function_ invoke__\">get<\/span>();\r\n\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$users<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$user<\/span>) {\r\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$user<\/span>-&gt;name;\r\n\r\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$user<\/span>-&gt;posts <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$post<\/span>) {\r\n        <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$post<\/span>-&gt;title;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the code above, we use the with(&#8216;posts&#8217;) method to preload a user&#8217;s posts. This way, when retrieving user data, the post data is also fetched together, avoiding the issue of N+1 queries.<\/p>\n<p>In addition, you can also use other methods to perform multi-table queries, such as manually specifying the relationship between tables using the join method.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-variable\">$users<\/span> = DB::<span class=\"hljs-title function_ invoke__\">table<\/span>(<span class=\"hljs-string\">'users'<\/span>)\r\n            -&gt;<span class=\"hljs-title function_ invoke__\">join<\/span>(<span class=\"hljs-string\">'posts'<\/span>, <span class=\"hljs-string\">'users.id'<\/span>, <span class=\"hljs-string\">'='<\/span>, <span class=\"hljs-string\">'posts.user_id'<\/span>)\r\n            -&gt;<span class=\"hljs-title function_ invoke__\">select<\/span>(<span class=\"hljs-string\">'users.*'<\/span>, <span class=\"hljs-string\">'posts.title'<\/span>)\r\n            -&gt;<span class=\"hljs-title function_ invoke__\">get<\/span>();\r\n\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$users<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$user<\/span>) {\r\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$user<\/span>-&gt;name;\r\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-variable\">$user<\/span>-&gt;title;\r\n}\r\n<\/code><\/pre>\n<p>In the code above, we use the join method to specify the relationship between the users table and posts table, and the select method to choose the desired fields.<\/p>\n<p>The above is the method for performing multi-table joins in Laravel. Depending on specific business needs, you can choose to use Eloquent model relationships or query builders for multi-table joins.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Laravel, you can use Eloquent ORM to perform a multi-table joint query. Assuming we have two tables, one being the users table and the other being the posts table. The users table stores information about users, while the posts table stores the posts that users have published. We can create two models, one is [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-27465","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to perform a join query with multiple tables in Laravel? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to perform a join query with multiple tables in Laravel?\" \/>\n<meta property=\"og:description\" content=\"In Laravel, you can use Eloquent ORM to perform a multi-table joint query. Assuming we have two tables, one being the users table and the other being the posts table. The users table stores information about users, while the posts table stores the posts that users have published. We can create two models, one is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T08:31:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T11:06:16+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ava Mitchell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"How to perform a join query with multiple tables in Laravel?\",\"datePublished\":\"2024-03-16T08:31:18+00:00\",\"dateModified\":\"2024-03-22T11:06:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\"},\"wordCount\":251,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\",\"name\":\"How to perform a join query with multiple tables in Laravel? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T08:31:18+00:00\",\"dateModified\":\"2024-03-22T11:06:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to perform a join query with multiple tables in Laravel?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to perform a join query with multiple tables in Laravel? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/","og_locale":"en_US","og_type":"article","og_title":"How to perform a join query with multiple tables in Laravel?","og_description":"In Laravel, you can use Eloquent ORM to perform a multi-table joint query. Assuming we have two tables, one being the users table and the other being the posts table. The users table stores information about users, while the posts table stores the posts that users have published. We can create two models, one is [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T08:31:18+00:00","article_modified_time":"2024-03-22T11:06:16+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"How to perform a join query with multiple tables in Laravel?","datePublished":"2024-03-16T08:31:18+00:00","dateModified":"2024-03-22T11:06:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/"},"wordCount":251,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/","name":"How to perform a join query with multiple tables in Laravel? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T08:31:18+00:00","dateModified":"2024-03-22T11:06:16+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-a-join-query-with-multiple-tables-in-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to perform a join query with multiple tables in Laravel?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=27465"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27465\/revisions"}],"predecessor-version":[{"id":61698,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27465\/revisions\/61698"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=27465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=27465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=27465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}