我有一个模型hotel.php使用create()插入酒店data.insert数据但是它没有返回id,返回的集合没有id字段!
Controller.php这样
WHERE
_TABLE_SUFFIX >= '170312'
Group by Month
hotel.php(型号)
/** "/user/2/create" */
public function store(User $user, HotelRequest $request)
{
$slug = (new hotel)->uniqueSlug( $request->name );
$request->merge([
'cat_id' => 1,
'slug' => $slug,
'created_by' => auth()->user()->id,
]);
$hotel = $user->hotels()->create( $request->all() );
dd($hotel);
................
User.php(型号)
namespace App;
use Illuminate\Http\UploadedFile;
use Illuminate\Database\Eloquent\Model;
class hotel extends Model
{
protected $fillable = ['name', 'description','address','street','city','email',
'phone','web','cat_id','slug','created_by'];
protected $primaryKey = 'slug';
/**
unique slugs genarating
*/
protected $slug_guards = ['create','room'];
public $incrementing = false;
它没有id属性。我需要id来上传图片!
Create_hotels ...迁移
public function hotels( )
{
return $this->hasmany('App\Hotel');
}
答案 0 :(得分:1)
您的酒店型号将主键设置为slug:
protected $primaryKey = 'slug';
我通常做的是,对于我的所有迁移,我设置了如下的自动增量:
$table->increments('id');
这样,laravel会为你处理一切。每个创建,更新或任何方法处理您的项目的ID。
这样,您就可以这样返回存储数据的id:
$id = create($data)->id;
其中$data
是具有新数据的模型。 $id
现在应包含最新存储的模型数据的id
值。
答案 1 :(得分:0)
您必须更改Hotel
模型(或删除整行):
public $incrementing = true;
答案 2 :(得分:0)
您正在将刚插入的数据转储到不包含id字段的数据库中。
在Controller类中创建一个show方法,如下所示
public function show(User $user){
dd($user)
}
的路线如下:
Route::get('user/{user}', 'Controller@show')
答案 3 :(得分:0)
在hotel.php
声明之前protected $fillable
尝试添加
protected $guarded = [
'id',
];
在store()
$slug = (new hotel)->uniqueSlug( $request->name );
方法中
尝试添加$slug->save();
然后返回的slug应该返回ID
。
和/或可能在行之后采用相同的类似策略
$hotel = $user->hotels()->create( $request->all() );
添加$hotel->save();
答案 4 :(得分:0)
我将主键更改为默认id
,并将$incrementing = true;
更改为已创建数据的id
。我在Controller