Php 如何将关系直接附加到对象上?
我不知道我是否正确地表述了这个问题,但不管怎样 因此,当我在控制器上使用store方法时,我在同一个请求中发送两个字段name和fr。 在我的控制器中,我希望能够创建模型室并将其关系附加到模型室。当我尝试下面的代码时,它告诉我我没有提供房间id。有没有自动的方法来实现这一点Php 如何将关系直接附加到对象上?,php,laravel,Php,Laravel,我不知道我是否正确地表述了这个问题,但不管怎样 因此,当我在控制器上使用store方法时,我在同一个请求中发送两个字段name和fr。 在我的控制器中,我希望能够创建模型室并将其关系附加到模型室。当我尝试下面的代码时,它告诉我我没有提供房间id。有没有自动的方法来实现这一点 public function store(RoomRequest $request) { $request = $request->validated(); $room
public function store(RoomRequest $request)
{
$request = $request->validated();
$room = new Room;
$room->create($request);
$room->translations()->create($request);
return success('');
}
谢谢你的帮助
附言:如果有一种更简洁的方法来编写这部分代码,我会很高兴听到如何改进它
谢谢大家! 您可以这样做:
Room::create($request->only(['name']))->translations()->create($request->only(['fr']));
只需检查输入的名称是否正确即可
此外,在房间模型类中,如果每个房间都有多种语言,则“翻译关系”应为“多语言”,如果每个房间没有多个翻译,则可以为“翻译语言”添加一列
<?php
namespace App;
use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Model;
use App\RoomTranslation;
class Room extends Model
{
protected $fillable = ['name'];
public function categories() {
return $this->hasMany('App\Category');
}
public function translations() {
return $this->hasOne('App\RoomTranslation');
}
}
Room::create($request->only(['name']))->translations()->create($request->only(['fr']));