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



嗨,我刚开始使用Laravel,正在浏览一些教程,发现了一些问题:这是我的控制器和型号:

namespace AppHttpControllers;
use AppMessage;
use IlluminateHttpRequest;
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 IlluminateDatabaseEloquentModel;
class Message extends Model
{
protected$fillable=['col1','col2'];
}

我应该在模型(Message(中添加一些东西(方法(来查找id吗?如果可能的话,我可以要求这种从数据库中提取数据并检查ID的方法吗?返回null还是将一条记录作为数组的元素返回?

您的代码很好,但在您的模型中,protected和变量$fillable之间没有空间,因此请更正

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

要在数组中获得结果,只需在您雄辩的中添加toArray()

$message=Message::findOrFail($id)->toArray();

如果没有找到记录,findorfail()将抛出错误,因此如果您想返回null而不是错误,请使用find()

$message=Message::find($id)->toArray();

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'));
}

代码很好,但在模型中:

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

只需将其修复为:

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

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

最新更新