Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 27.01.2019 09:17:47

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 14

hasManyThrough da aldığım hata.

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

Çevrimdışı

#2 27.01.2019 11:52:08

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 14

Yanıt: hasManyThrough da aldığım hata.

        return $this->hasManyThrough(
            "App\Model\Media",
            "App\Model\MediaPost",
            "post_id",
            "id",
            "id",
            "media_id");
    }

Yukardaki şekilde yapınca düzgün çalıştı, meğersem secondalocalkey de varmış.

Çevrimdışı

Forum alt kısmı