Ankündigung

Einklappen
Keine Ankündigung bisher.

Laravel 5.5 Fremdschlüssel richtig definieren und Beziehungen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Laravel 5.5 Fremdschlüssel richtig definieren und Beziehungen

    Hi,

    ich möchte die Fremdschlüssel richtig definieren, leider komme ich mit den Code:

    PHP-Code:
      $table->foreign('user_id')->references('id')->on('users'); 
    nicht sehr weit.

    So sehen gerade zwei Tabellen aus:

    PHP-Code:
      //Tabelle 2 Coach Schema::create('coach', function (Blueprint $table) {     $table->increments('coachid');     $table->integer('categorieid')->unsigned()->index();     $table->string('name', 60);     $table->text('describtion');     $table->string('place');     $table->string('PLZ');     $table->integer('picturecoachnr'); }); //Tabelle 3 Courses Schema::create('course', function (Blueprint $table) {     $table->increments('courseid');     $table->integer('coachid')->unsigned()->index();     $table->integer('placeid')->unsigned()->index();     $table->string('name');     $table->text('describtion'); 
    Ich habe zwei Möglichkeiten versucht:

    //Tabelle 3 Courses
    Schema::create('course', function (Blueprint $table) {
    $table->increments('courseid');
    $table->integer('coachid')->unsigned()->index();
    $table->foreign('coachid')->references('id')->on('coach');



    und einmal habe ich die Spalte coachid weggelassen.
    //Tabelle 3 Courses
    Schema::create('course', function (Blueprint $table) {
    $table->increments('courseid');
    $table->foreign('coachid')->references('id')->on('coach');



    Leider funktioniert beides nicht.


    Wie würde den so ein Beispiel aussehen um die Fremdschlüssel zu definieren?
    Erkennt die Datenbank die Beziehung nach Eingabe der Fremdschlüssel automatisch?


    Für Hilfe und Ratschläge wäre ich dankbar.


    Grüße,

    Salamont


  • #2
    Was wird denn für ein SQL Statement daraus generiert? Kannst du dir ausgeben lassen mit "php artisan migrate --pretend"
    "Software is like Sex, it's best if it's free." - Linus Torvalds

    Kommentar


    • #3
      Zur Übersichtlichkeit habe ich die anderen Tabellen gelöscht.

      Das kommt nach "php artisan migrate --pretend" raus:

      PHP-Code:
      Migration table created successfully.
      CreateUsersTablecreate table `coach` (`coachidint unsigned not null auto_increment primary key, `categorieidint unsigned not null, `namevarchar(60not null, `firstnamevarchar(60not null, `describtiontext not null, `placevarchar(191not null, `PLZvarchar(191not null, `streetvarchar(191
      not null, `homepage_urlvarchar(191not null, `coordinationdouble not null, `picturecoachnrint not null) default character set utf8mb4 collate utf8mb4_unicode_ci
      CreateUsersTable
      alter table `coachadd index `coach_categorieid_index`(`categorieid`)
      CreateUsersTablecreate table `course` (`courseidint unsigned not null auto_increment primary key, `coachidint unsigned not null, `placeidint unsigned not null, `namevarchar(191not null, `describtiontext not null, `picturecoursenrint not null, `pricedouble not null, `viewsint not null, `re
      commend
      tinyint(1not null) default character set utf8mb4 collate utf8mb4_unicode_ci
      CreateUsersTable
      alter table `courseadd index `course_coachid_index`(`coachid`)
      CreateUsersTablealter table `courseadd index `course_placeid_index`(`placeid`) 
      Die Migration funktioniert.
      Nur sobald ich die Fremdschlüssel definieren möchte funktioniert es nicht. Stimmt den das Schema überhaupt?

      PHP-Code:
      Schema::create('course', function (Blueprint $table) {
      $table->increments('courseid');
      $table->integer('coachid')->unsigned()->index();
      $table->foreign('coachid')->references('id')->on('coach'); 

      Kommentar

      Lädt...
      X