사용중인 두 개의 테이블이 있습니다.Laravel Seed가 다른 테이블의 열에서 열을 업데이트합니다.
예를 들어 게시물을 사용하려고합니다.
첫 번째는 그 다음 내가 Authors 테이블에 국가를 추가 할 authors 테이블을
id|name
1 |Devin
2 |James
이 게시물 테이블
id|name |author|author_id|country
1 |test |Devin |1 |South Africa
2 |test2|James |2 |Whales
3 |test3|Devin |1 |South Africa
입니다. 그래서 난 내 표는 내가 무엇을 달성하려고하는 게시물 테이블을 기반으로 저자 테이블에 국가 씨앗하는 데이터베이스 시더를 작성하는 지금이
id|name |country
1 |Devin |NULL
2 |James |NULL
같이 갈 수있는 마이그레이션을했다.
내가 그 author_id의 게시물 국가를 잡고는 내 질문은이
id|name |country
1 |Devin |South Africa
2 |James |Whales
처럼 보일 수 있도록 다음 저자 테이블에 나라를 삽입 할, 시더를 사용하여이 작업을 수행 할 수 있습니다 ? 또는 모든 제작자가 직접 수동으로 작업하지 않아도이를 수행 할 수있는 더 좋은 방법이 있습니다.
나는이<?php
use Illuminate\Database\Seeder;
class AlterOperatorsData extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$authors = App\Author::all();
foreach ($authors as $author) {
$country = App\Post::where('author_id', $author->id)->get()->first();
DB::table('authors')->update([
'country' => $country->country
]);
}
}
}
그런 짓을 생각하지만, 일부 무거운 할 것이다 사람이 더 나은 방법을 제안 할 수 있습니다, 또는 현재의 방법을 살펴처럼 그게 수 있는지 본다 개선 되나요?
@Devin 그레이, 당신은 어디를 설명 할 수 처음부터 작성자 테이블을 채우고 있습니까? 나는 언제 당신이 저자 이름을 그곳에두고 있나? 바로 그 곳에서 나라에 들어가는 것이 가장 효율적입니다. – Learner
이것은 기존 응용 프로그램에 대한 빠른 수정이며, 외래 키를 추가하는 중이지만 지금은이 수정을 밀어 넣어야합니다. 위의 코드는 작동하고 필요한 작업을 수행하지만 더 나은 방법이 있는지 알아보기 위해 –
기존 응용 프로그램이라도 :) 작성자 테이블에 작성자 이름을 넣는 컨트롤러 또는 시드가 있어야합니다. :) – Learner