Ayrıca bir test başına (dosya) temelinde yabancı anahtarları aktive olabilir: İşte benim çözümdür.
İşte bir özellik var: (ör tests/ForeignKeys.php
)
<?php
namespace Tests;
trait ForeignKeys
{
/**
* Enables foreign keys.
*
* @return void
*/
public function enableForeignKeys()
{
$db = app()->make('db');
$db->getSchemaBuilder()->enableForeignKeyConstraints();
}
}
test set-up zincirinde bir yere yöntemini çalıştırmak unutmayın. (tests/TestCase.php
) o kadar sevdiği testlere ekleyebilirsiniz sonra
<?php
namespace Tests;
/**
* Class TestCase
* @package Tests
* @mixin \PHPUnit\Framework\TestCase
*/
abstract class TestCase extends \Illuminate\Foundation\Testing\TestCase
{
use CreatesApplication;
...
/**
* Boot the testing helper traits.
*
* @return array
*/
protected function setUpTraits()
{
$uses = parent::setUpTraits();
if (isset($uses[ForeignKeys::class])) {
/* @var $this TestCase|ForeignKeys */
$this->enableForeignKeys();
}
}
...
: Ben TestCase için geçersiz kılınmış olarak mayın ekledi
<?php
namespace Tests\Feature;
use Tests\ForeignKeys;
use Tests\TestCase;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleFeatureTest extends TestCase
{
use DatabaseMigrations;
use ForeignKeys;
...
Çoğu insanın test için sqlite kullandığını varsayarak, test bazında yabancı anahtar kısıtlamalarını gerçekten etkinleştirebilirsiniz. Yabancı_Kadelerin ayarlanması, ayar değiştirilmeden önce hazırlanan ifadeler üzerinde etkili olacağından, bu kodu TestCase'inizdeki bir yardımcı yönteme ekleyebilir ve ihtiyacınız olduğunda arayabilirsin. – jhoff
Laravel 5.5'deyim ve bu çözümle garip bir davranışa sahibim. Çalıştığımda -> attach() ONE modelini diğerine (birçok ilişkiden çok): * PDOException: SQLSTATE [HY000]: Genel hata: 1 böyle bir tablo yok: main.cv * ... ** cvs ** benim masa ve ben deniyorum ** $ this-> cvs() -> ekle ($ cv); ** Birisi benzer bir sorunu var mı? – Jairo
Laravel için çalışmalar 5.6 – bambamboole