Это невозможно - есть только несколько случаев, когда вы хотели бы связать с уникальным столбцом на столе, который также не рк. Тем не менее, другие структуры разработали методы изменения первичного ключа, и никто еще формально не запрашивал его для Laravel. Вы можете write up a proposal on GitHub, и он может попасть в будущую версию.
Глядя на ваш конкретный пример на мгновение - это может иметь неожиданные результаты, когда вы приходите, чтобы использовать отношения в нетерпеливых погрузочных ситуациях, и на его долю приходится только на одну сторону отношений. Когда вы добавляете applyTo на Other, у вас будет обратная проблема.
Возможно установить связь через isbn; однако это будет иметь форму книги hasOne ISBN, ISBN принадлежит к книге, ISBN hasMany Others, Other принадлежит ISBN; и доступ к свойствам будет выглядеть как $book->isbn->others
или $other->isbn->book
.
Мое последнее предложение было бы расширить книгу и установить первичный ключ нового класса как isbn
и основывать все ваши отношения на этой модели. Это не идеально, но было бы менее болезненно, чем некоторые другие решения.
Короткий ответ - вы не можете. Однако может быть решение. Не могли бы вы объяснить вашу схему? Почему у вас не может быть 'book_id' как ваш fk? –
Это была существующая база данных, и это было довольно плохо (это была не единственная проблема). –