내 질문은 단순히 주 테이블 (책)에 중복 항목을 삽입하지 않고 데이터를 조인 테이블 (user_book)에 삽입하는 방법입니다.중복 피하기 datamapper 코드 점화 기 데이터베이스 레코드
는 주로 우리가
id Users id Books id Users Books
1 Sam 1 B1 1 1 1
2 Ben 2 B2 2 1 3
3 Mike 3 B3 3 3 3
4 2 2
아래 나무 테이블이 고려하지만이 책 테이블에 존재 새로운 책 (B3와 같은 예 마이크)를 삽입하고 때 문제입니다. 중복 된 도서는 도서 표에 표시되며 위의 표는 다음과 같습니다 :
id Users id Books id Users Books
1 Sam 1 B1 1 1 1
2 Ben 2 B2 2 1 3
3 Mike 3 B3 3 3 4
4 B3 4 2 2
이제 해결해야 할 부분이 있습니까? 아니면 독창적 인 도서 목록을 가질 수 없습니까?
나는 우리가 DB에 책 레코드를 삽입 할 때 사용자와 책 사용자가이 < ---> 책은 우리가 확인해야 users_books 으로 관련이 아니라고 데이터베이스 감안할 때 를 삽입하기 위하여려고하는 경우 복제. 또한, 책이 존재하면, 관계가 삽입되고 책 레코드는 삽입되지 않습니다. 어떻게 할 수 있습니까? 한 가지 방법은 테이블 다음의 관계를 확인하고 사용자와 책 사이의 관계가 있는지 (book->이 존재하는) 경우 "책"에$m=new Book();
$m->where('id_book', $data['user_booklist'][$i]['id'])->get();
$u = new User();
$u -> where('id_user', $data['user_profile']['id'])-> get();
if(!$u->where_related($m))
{
$m -> name = $data['user_booklist'][$i]['name'];
$m -> id_book = $data['user_booklist'][$i]['id'];
$m -> save($u);
}
말을하고 그 다음이 있다면하지 않습니다 그것을 삽입하십시오. 또한이를 피하기 위해 mysql db 구조에서 어떤 것을 변경해야합니다.
위의 코드는 작동하지 않지만 내가 말하는 것에 대한 아이디어를 제공해야합니다.
업데이트 : 두 사용자가 같은 책을 좋아하는 경우
가 요약하면, 난 그냥 조인 테이블 (users_books)와 동안이 아니라 테이블에 새 레코드를 만드는 데에 레코드 (책을) 삽입 할. 고유 한 sql 태그를 사용하면 고유 한 목록을 유지하지만 다중 관계를 조인 테이블 users_books에 삽입 할 수 없으므로 작동하지 않습니다.
위 코드가 작동하지 않는 이유는 무엇입니까? 가는 올바른 길을 찾는다. – Zombaya