Добавление записей в связанные модели в RestAPIPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Добавление записей в связанные модели в RestAPI

Сообщение Anonymous »

Я хочу вставить данные в тело json, в котором хранятся некоторые связанные записи. Допустим, у меня есть такая структура таблицы: "ferramentas":

Код: Выделить всё

{
"title": "hotel",
"link": "https://github.com/typicode/hotel",
"description": "Local app manager. Start apps within your browser, developer tool with local .localhost domain and https out of the box.",
"tags":\["node", "organizing", "webapps", "domain", "developer", "https", "proxy"\]
}
где «теги» — это связанная модель. Между двумя моделями существуют отношения многие ко многим. Есть ли способ вставить это в заявку на тело, используя какую-нибудь пошлину, например, бессонницу? или дайте просто ссылку на документацию или руководство в Интернете, объясняющее это?
Ниже функция моего магазина

Код: Выделить всё

 public function store(Request $request)
{
$request->validate([
'title'=>'required|string|max:255',
'link'=> 'required|url|max:255',
'description' => 'required|string|max:255',
'tag'=> 'required|array',
'tag.name' => 'required|max:255'
]);

$ferramentas = Ferramentas::create($request->only(['title', 'link', 'description']));

$tags = [];

foreach($request->input('tag') as $tagName){
$tag = Tags::firstOrCreate(['name'=>$tagName])->id();
}

$ferramentas->tags()->sync($tags);

return  FerramentasResource::collection($ferramentas);

}
Мои модели:
\\ Теги

Код: Выделить всё

class Tags extends Model
{
use HasFactory;
protected $fillable= [
'id',
'name'
];

protected $table = 'tags';
public $timestamps = false;

public function ferramentas(){
return $this->belongsToMany(Tags::class, 'ferramentas_tags', 'tag_id', 'ferramenta_id');
}

}
\\ Инструменты

Код: Выделить всё

class Ferramentas extends Model
{
use HasFactory;

protected $fillable = [
'id',
'title',
'descriptions',
'link',
'tags'
];

protected $table = 'ferramentas';
public $timestamps = false;

public function tags(){
return $this->belongsToMany(Tags::class, 'ferramentas_tags', 'ferramenta_id', 'tag_id' );
}

}
Мои маршруты:

Код: Выделить всё

Route::get('ferramentas', [FerramentasController::class, 'index']);
Route::get('ferramentas/api/{tag}', [FerramentasController::class, 'show']);
Route::post('ferramentas/api', [FerramentasController::class, 'store']);
Я только что прочитал несколько руководств и поискал в документации по laravel, но не нашел ничего, что могло бы мне помочь — я плохо исследую.
На данный момент, когда я отправляю http-сообщение в бессоннице, например, с помощью этого json

Код: Выделить всё

{
"title": "hotel",
"link": "https://github.com/typicode/hotel",
"description": "Local app manager. Start apps within your browser, developer tool with local .localhost domain and https out of the box.",
"tags":\["node", "organizing", "webapps", "domain", "developer", "https", "proxy"\]
}
В базе данных ничего не произошло. любые записи добавляются в мои таблицы.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -a-restapi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»