Merhabalar.
Laravel framework kullanmadığım bir blog çalışmam da orm olarak Elequent Orm kullanıyorum. Laravel ile içli dışlı olduğu için burada konu açıyorum.
media_post tablomda primary key kullanmadığım için karışıklık oldu sanırım. Bu haliyle sorunu çozebilir miyiz ? Yoksa id ekleyip oyle mi kullanmalı ?
Post.php (Model içinde kullandığım relation)
public function media()
{
// post un mediaları alınacak.
return $this->hasManyThrough("App\Model\Media", "App\Model\MediaPost","post_id", "media_id", "id");
}
Table yapım;
CREATE TABLE `medias` (
`id` int(10) UNSIGNED NOT NULL,
`path` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`type` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`model` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `media_post` (
`media_id` int(10) UNSIGNED NOT NULL,
`post_id` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `posts` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`slug` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`content` text COLLATE utf8mb4_unicode_ci NOT NULL,
`status` tinyint(1) NOT NULL COMMENT 'For timed article and others...',
`publication_time` timestamp NULL DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Aldığım hata;
Fatal error
: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'media_post.id' in 'on clause' in C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php:326 Stack trace: #0 C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php(326): PDO->prepare('select `medias`...') #1 C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php(657): Illuminate\Database\Connection->Illuminate\Database\{closure}('select `medias`...', Array) #2 C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php(624): Illuminate\Database\Connection->runQueryCallback('select `medias`...', Array, Object(Closure)) #3 C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php(333): Illuminate\Database\Connection->run('select `medias`...', Array, Object(Closure)) #4 C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Query\Builder.ph in
C:\xampp\htdocs\PHP\DeneyerekOgrenelim\simpleBlog\vendor\illuminate\database\Connection.php
on line
664