with una tablas relaciones relacion que polimorficas polimorfica muchos hasone hasmany español php laravel eloquent polymorphic-associations

php - tablas - ¿Cómo eliminar una relación polimórfica en Eloquent?



tablas polimorficas laravel (2)

$posts->photos() es la consulta de relación para devolver todas las fotos para una publicación. Si llama a delete() sobre eso, eliminará todos esos registros. Si solo desea eliminar un registro específico, debe asegurarse de llamar solo a eliminar en el que desea eliminar. Por ejemplo:

$posts->photos()->where(''id'', ''='', 1)->delete();

Tengo un modelo como este:

<?php class Post extends Eloquent { protected $fillable = []; public function photos() { return $this->morphMany(''Upload'', ''imageable''); } public function attachments() { return $this->morphMany(''Upload'', ''attachable''); } }

y el esquema de mi tabla morphMany es así:

CREATE TABLE `uploads` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `raw_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `size` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `downloads` int(11) NOT NULL DEFAULT ''0'', `imageable_id` int(11) DEFAULT NULL, `imageable_type` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `attachable_id` int(11) DEFAULT NULL, `attachable_type` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `user_id` int(10) unsigned NOT NULL, `created_at` timestamp NOT NULL DEFAULT ''0000-00-00 00:00:00'', `updated_at` timestamp NOT NULL DEFAULT ''0000-00-00 00:00:00'', PRIMARY KEY (`id`), KEY `uploads_user_id_index` (`user_id`), CONSTRAINT `uploads_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `posts` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ahora necesito eliminar una fila de esta tabla, probé $posts->photos()->delete(); pero eliminó todas las filas asociadas a esta Post .

¿Alguien podría ayudarme?


La relación ni siquiera es necesaria para esto. Simplemente use el modelo de carga directamente:

Upload::find($id)->delete();

O incluso más corto:

Upload::destroy($id);