【问题标题】:Laravel is returning 0 for model id on production server ( Forge )Laravel 在生产服务器 ( Forge ) 上为模型 id 返回 0
【发布时间】:2018-11-14 01:58:11
【问题描述】:

我有一个奇怪的场景,Laravel 返回一个 0 作为 ID。这在本地工作,我还确认模型在另一个函数中正确保存并返回 ID。为什么ID总是0? (模型总是成功保存)。

ID 列是自动递增的。

//型号

class Email extends Model
{
public $fillable = ['to', 'from', 'relates_to', 'name', 'email',
 'subject', 'greeting','attachment',
'body', 'module_id', 'sign_off', 'course_id' ];

protected $casts = ['attachment'=>'integer'];

protected $dates = ['sent_at'];

public function scopeMine($query, $user)
{
    return $query->where('from', $user);
}
}

//控制器

public function storeAndSend(Request $request)
{
    $validatedData = $request->validate([
        'subject' => 'sometimes|required|string',
        'greeting' => 'required',
        'body' => 'required',
        'sign_off' => 'required',
        'email' => 'required|email',
        'module_id' => 'required',
        'name' => 'required|string'
    ]);

    //save Email   
    $email = new \App\Email;
    $email->to = $request->has('user') ? $request->user : 0;
    $email->name = $request->name;
    $email->email = $request->email;
    $email->relates_to = $request->has('entity') ? $request->entity : null;
    $email->from   = $request->user()->id;
    $email->subject = $request->subject;
    $email->greeting = $request->greeting;
    $email->attachment = $request->attachment ?? null;
    $email->body = $request->body;
    $email->sign_off = $request->sign_off;
    $email->course_id = $request->course_id;
    $email->module_id = $request->module_id ?? null;

    $email->save();
    dd($email->toArray()); // $email->id = 0

    //get to
    dispatch(new \App\Jobs\SendCourse($email->id));

    return response()->json(['success'=>true]);
}

//转储的输出

    array:15 [
  "to" => "58"
  "name" => "joe"
  "email" => "joe@boobo.com"
  "relates_to" => "App\User"
  "from" => 1
  "subject" => "test"
  "greeting" => "Hello"
  "attachment" => null
  "body" => "<p>test</p>"
  "sign_off" => "Catch you later"
  "course_id" => 27
  "module_id" => -1
  "updated_at" => "2018-11-04 14:00:59"
  "created_at" => "2018-11-04 14:00:59"
  "id" => 0
]

【问题讨论】:

  • 你能检查save的结果还是使用saveOrFail
  • @makadev -&gt;save() 正在返回 true
  • @HariHarker 不确定这有什么关系?
  • toArray 以及如何处理id 也可能存在问题。 dd($email-&gt;id) 呢,这会返回正确的 id 吗?

标签: php laravel


【解决方案1】:

这是望远镜的问题。 正如 cmets 中所说,这就是问题所在:https://github.com/laravel/telescope/issues/289

看起来它现在已经修复了,顺便说一句。

【讨论】:

    猜你喜欢
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2015-05-15
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多