无法在迁移时分离关系:使用Laravel/Eloquent ORM重置

无法在迁移时分离关系:使用Laravel/Eloquent ORM重置,orm,laravel-4,relational-database,eloquent,migrate,Orm,Laravel 4,Relational Database,Eloquent,Migrate,我已经成功地在Laravel中建立了雄辩的ORM关系,但是在删除相关表之前分离它们是非常困难的,我不认为我做得对,因为我得到了以下两个错误,如下所述 我在谷歌上搜索到了几乎无穷无尽的信息,大多数信息来源都给出了不同的方法,这并没有多大帮助。下面是我正在尝试的当前方法,它与官方Laravel网站上的文档一致--我知道文档只给出了一个分离一个模型的单个实例的示例,这就是为什么我将它放在foreach循环中 在执行migrate:refresh之前,我通过手动删除迁移文件、转储自动加载并从数据库中删

我已经成功地在Laravel中建立了雄辩的ORM关系,但是在删除相关表之前分离它们是非常困难的,我不认为我做得对,因为我得到了以下两个错误,如下所述

我在谷歌上搜索到了几乎无穷无尽的信息,大多数信息来源都给出了不同的方法,这并没有多大帮助。下面是我正在尝试的当前方法,它与官方Laravel网站上的文档一致--我知道文档只给出了一个分离一个模型的单个实例的示例,这就是为什么我将它放在foreach循环中


在执行migrate:refresh之前,我通过手动删除迁移文件、转储自动加载并从数据库中删除pivot表来删除它们。相反,我现在通过模型创建关系,使用Eloquent的hasMany、hasOne等方法。似乎是创建模式关系的更安全、更普遍接受的做法。

可能不是问题所在,但您似乎只是在分离关系,而不是在下拉列表中实际删除表?您只是想删除表吗?
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTableRelationships extends Migration {
 /**
 * Run the migrations.
 *
 * @return void
 */
 public function up() {
     Schema::table(
         'users', function ($table) {
            $table->foreign('avatar')->references('id')->on('uploads')->onUpdate('cascade')->onDelete('cascade');
         }
     );

     Schema::table(
         'organisations', function ($table) {
            $table->foreign('owner')->references('id')->on('users')->onUpdate('cascade');
            $table->foreign('logo')->references('id')->on('uploads')->onUpdate('cascade');
         }
     );

     Schema::table(
         'groups', function ($table) {
            $table->foreign('organisation')->references('id')->on('organisations')->onUpdate('cascade');
            $table->foreign('owner')->references('id')->on('users')->onUpdate('cascade');
            $table->foreign('logo')->references('id')->on('uploads')->onUpdate('cascade');
         }
     );

     Schema::table(
        'uploads', function ($table) {
            $table->foreign('uploaded_by')->references('id')->on('users')->onUpdate('cascade');
        }
     );
 }

 /**
 * Reverse the migrations.
 *
 * @return void
 */
 public function down() {
     foreach(User::all as $thisUser) {
        $thisUser->avatar()->detach();
        $thisUser->save();
     }

     foreach(Organisation::all as $thisOrganisation) {
        $thisOrganisation->owner()->detach();
        $thisOrganisation->logo()->detach();
        $thisOrganisation->save();
     }

     foreach(Group::all as $thisGroup) {
        $thisGroup->organisation()->detach();
        $thisGroup->owner()->detach();
        $thisGroup->logo()->detach();
        $thisGroup->save();
     }

     foreach(Upload::all as $thisUpload) {
        $thisUpload->uploaded_by()->detach();
        $thisUpload->save();
     }
}
}