更新表破坏关系查询

时间:2015-09-18 10:31:13

标签: php mysql laravel laravel-5

我的标题有点含糊不清,因为我的问题很难形容。

我有两张桌子:Articles | Products;他们之间存在多对多的关系,因此我的数据透视表是article_product

用户可以在提交文章时选择产品,直到那时它才能完美运行。但不幸的是,我必须每周运行LOAD DATA INFILE任务,该任务将更新产品表上的所有产品记录。

函数LOAD DATA INFILE REPLACE完全符合我的要求。它删除了我的产品表上的所有记录并创建了新记录。每个产品都有一个来自导入文件的id通过LOAD DATA INFILE命令,因此我的产品表上有两行:id(自动增量)和id_imported(unsignedInteger | index) 。

id_imported作为我的数据透视表上的引用键,即使我删除所有记录然后创建新记录,意味着自动增量键将完全不同,我仍然可以保持没有问题的关系。

数据库方面,它工作得很好但是当我看一下我的用户界面时,它并没有。看看:

ArticleController:

$products = Product::lists('designation_1', 'id_imported');

查看:

<div class="form-group">
    {!! Form::label('product_list', 'Articles: ') !!}
    {!! Form::select('product_list[]', $products, null, ['id'=>'product_list', 'class' => 'form-control', 'multiple']) !!}
</div>

Article.php:

public function getProductListAttribute() {
        return $this->products->lists('id_imported');
    }

这一堆代码会将产品表中的所有产品检索到选择选项中。在创建包含一个或多个产品的文章后,如果用户必须返回修改它,则链接的产品将被选中,但事实并非如此。没有被选中,更重要的是,它只有在我导入我的产品表ONCE时才有效。这意味着,如果我使用load data infile命令从我的.csv文件导入数据,一切正常,但如果我这样做两次或更多,那么它就会破坏所有内容。

如果我的数据透视表没有完美运行,那将是很正常的。但每次我选择产品时,数据透视表都会完美更新!即使我多次更新我的产品表,关系仍然完好无损,因为我已经在产品表上引用了id_imported键而不是自动增量键。但是系统无法检索基本关系,例如:

$article->products->lists('id_imported');

我几个小时都在苦苦挣扎。它实际上没有意义,因为我的数据库正在以它应该的方式工作,但似乎laravel缺少一些东西。我需要更新一些东西吗?提前谢谢。

0 个答案:

没有答案