Laravel Modelname:find($ id)或ModelName :: findorFail($ id)?

时间:2018-11-29 04:37:59

标签: database laravel model

嗨,我刚刚开始使用Laravel,并且正在逐步学习一些教程,并陷入了某些困境: 这是我的控制器和模型:

namespace App\Http\Controllers;

use App\Message;
use Illuminate\Http\Request;

class MessageController extends Controller
{
  public function create(Request $request)
  {
    $message=new Message();
    $message->col1=$request->col1;
    $message->col2=$request->col2;
    $message->save();
    return redirect('/home');
  }
  public function vewrec($id)
  {
    $message=Message::findOrFail($id);
    return view('record',['message'=>$message]);
  }
}

和型号代码:

  namespace App;

  use Illuminate\Database\Eloquent\Model;

  class Message extends Model
  {
    protected$fillable=['col1','col2'];
  }

是否应该在模型(消息)中添加某些方法(方法)以找到ID? 如果可能的话,我可以要求这种方法从数据库中提取数据并检查ID吗?返回null还是返回一个记录作为数组的元素?

3 个答案:

答案 0 :(得分:0)

findOrFail函数将返回一个集合。如果需要数组,则可以使用toArray()函数。

public function vewrec($id)
{
    $message=Message::findOrFail($id);
    if(count($message)!=0){
        $message = $message->toArray();
    }else{
        $message = NULL;
    }
    return view('record',compact('message'));
}

答案 1 :(得分:0)

您的代码很好,但是在您的模型中update(){ this.http.post<any>("/ssservice", "products=" + body, options) .suscribe({ complete: () => { this.getProduct() }, }); } getProduct () { this.http.get<Product[]>("/ssservice") .subscribe({ (data: Product[]) => products.push(...data), err => console.log(err)}) } 和变量protected之间没有空格,因此请更正

$fillable

要获得数组结果,只需在您的口才中添加protected $fillable=['col1','col2'];

toArray()

$message=Message::findOrFail($id)->toArray(); 如果找不到记录,将引发错误,因此,如果您想返回null而不是错误,请使用findorfail()

find()

答案 2 :(得分:0)

代码很好,但是在模型中:

protected$fillable=['col1','col2'];

只需将其修复为:

protected $fillable=['col1', 'col2'];

对于公共函数vewrec($ id),它可以返回错误或返回一个元素。也许如果您不希望出现错误,请使用Model :: find($ id)。 希望对您有所帮助。