我是 Laravel 的新手。如何查找记录是否存在?
$user = User::where('email', '=', Input::get('email'));
我可以在这里做什么以查看是否$user
有记录?
我是 Laravel 的新手。如何查找记录是否存在?
$user = User::where('email', '=', Input::get('email'));
我可以在这里做什么以查看是否$user
有记录?
这取决于您是想事后与用户合作还是只检查是否存在。
如果要使用用户对象(如果存在):
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
// user doesn't exist
}
如果你只想检查
if (User::where('email', '=', Input::get('email'))->count() > 0) {
// user found
}
甚至更好
if (User::where('email', '=', Input::get('email'))->exists()) {
// user found
}
if (User::where('email', Input::get('email'))->exists()) {
// exists
}
在 laravel eloquent 中,有默认exists()
方法,参考后面的例子。
if (User::where('id', $user_id )->exists()) {
// your code...
}
最好的解决方案之一是使用firstOrNew
orfirstOrCreate
方法。该文档对两者都有更多详细信息。
if($user->isEmpty()){
// has no records
}
Eloquent 使用集合。请参阅以下链接:https ://laravel.com/docs/5.4/eloquent-collections
Laravel 5.6.26v
通过主键( email 或 id )查找现有记录
$user = DB::table('users')->where('email',$email)->first();
然后
if(!$user){
//user is not found
}
if($user){
// user found
}
包括“use DB”和表名 user 使用上面的查询变成复数,比如 user to users
if (User::where('email', 'user@email.com')->first()) {
// It exists
} else {
// It does not exist
}
如果您只需要检查是否存在,请使用first()
,而不是。count()
first()
更快,因为它检查单个匹配项,而count()
计算所有匹配项。
这将检查用户表中是否存在请求的电子邮件:
if (User::where('email', $request->email)->exists()) {
//email exists in user table
}
在你的控制器中
$this->validate($request, [
'email' => 'required|unique:user|email',
]);
在您的视图中 - 显示已存在的消息
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
我使用 empty() 函数解决了这个问题:
$user = User::where('email', Input::get('email'))->get()->first();
//for example:
if (!empty($user))
User::destroy($user->id);
检查null
withinif
语句可以防止 Laravel 在查询结束后立即返回 404。
if ( User::find( $userId ) === null ) {
return "user does not exist";
}
else {
$user = User::find( $userId );
return $user;
}
如果找到用户,它似乎会运行双重查询,但我似乎找不到任何其他可靠的解决方案。
if ($u = User::where('email', '=', $value)->first())
{
// do something with $u
return 'exists';
} else {
return 'nope';
}
可以与 try/catch 一起使用
->get() 仍然会返回一个空数组
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
使用Validator简单、舒适且易于理解
class CustomerController extends Controller
{
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:customers',
'phone' => 'required|string|max:255|unique:customers',
'password' => 'required|string|min:6|confirmed',
]);
if ($validator->fails()) {
return response(['errors' => $validator->errors()->all()], 422);
}
您已经看到了很多解决方案,但是神奇的检查语法可能是这样的,
$model = App\Flight::findOrFail(1);
$model = App\Flight::where('legs', '>', 100)->firstOrFail();
当未找到任何相关模型时,它会自动引发异常并响应 404 有时您可能希望在未找到模型时抛出异常。这在路由或控制器中特别有用。fingernail 和 firstOrFail 方法将检索查询的第一个结果;但是,如果没有找到结果,Illuminate\Database\Eloquent\ModelNotFoundException
则会抛出 an。
参考:https ://laravel.com/docs/5.8/eloquent#retrieving-single-models
$user = User::where('email', request('email')->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');
如果要插入唯一记录,可以使用 laravel 验证:
$validated = $request->validate([
'title' => 'required|unique:usersTable,emailAddress|max:255',
]);
但您也可以使用以下方式:
1:
if (User::where('email', $request->email)->exists())
{
// object exists
} else {
// object not found
}
2:
$user = User::where('email', $request->email)->first();
if ($user)
{
// object exists
} else {
// object not found
}
3:
$user = User::where('email', $request->email)->first();
if ($user->isNotEmpty())
{
// object exists
} else {
// object not found
}
4:
$user = User::where('email', $request->email)->firstOrCreate([
'email' => 'email'
],$request->all());
这将检查表中是否存在特定的电子邮件地址:
if (isset(User::where('email', Input::get('email'))->value('email')))
{
// Input::get('email') exist in the table
}
最短的工作选项:
// if you need to do something with the user
if ($user = User::whereEmail(Input::get('email'))->first()) {
// ...
}
// otherwise
$userExists = User::whereEmail(Input::get('email'))->exists();
$user = User::where('email', '=', Input::get('email'))->first();
if ($user === null) {
// user doesn't exist
}
可以写成
if (User::where('email', '=', Input::get('email'))->first() === null) {
// user doesn't exist
}
如果这就是您在原始语句中使用 $user 的全部,这将返回 true 或 false 而不分配临时变量。
我认为以下方式是实现相同目标的最简单方法:
$user = User::where('email', '=', $request->input('email'))->first();
if ($user) {
// user doesn't exist!
}
创建以下方法(为我自己)以检查给定的记录 id 是否存在于 Db 表上。
private function isModelRecordExist($model, $recordId)
{
if (!$recordId) return false;
$count = $model->where(['id' => $recordId])->count();
return $count ? true : false;
}
// To Test
$recordId = 5;
$status = $this->isModelRecordExist( (new MyTestModel()), $recordId);
主页 它有帮助!
最简单的方法
public function update(Request $request, $id)
{
$coupon = Coupon::where('name','=',$request->name)->first();
if($coupon->id != $id){
$validatedData = $request->validate([
'discount' => 'required',
'name' => 'required|unique:coupons|max:255',
]);
}
$requestData = $request->all();
$coupon = Coupon::findOrFail($id);
$coupon->update($requestData);
return redirect('admin/coupons')->with('flash_message', 'Coupon updated!');
}
Laravel 6 或顶部:写表名,然后给出 where 子句条件,例如where('id', $request->id)
public function store(Request $request)
{
$target = DB:: table('categories')
->where('title', $request->name)
->get()->first();
if ($target === null) { // do what ever you need to do
$cat = new Category();
$cat->title = $request->input('name');
$cat->parent_id = $request->input('parent_id');
$cat->user_id=auth()->user()->id;
$cat->save();
return redirect(route('cats.app'))->with('success', 'App created successfully.');
}else{ // match found
return redirect(route('cats.app'))->with('error', 'App already exists.');
}
}
如果您想在数据库中插入一条记录,但不存在具有相同电子邮件的记录,则可以执行以下操作:
$user = User::updateOrCreate(
['email' => Input::get('email')],
['first_name' => 'Test', 'last_name' => 'Test']
);
该updateOrCreate
方法的第一个参数列出了在关联表中唯一标识记录的列,而第二个参数包含要插入或更新的值。
你可以在这里查看文档:Laravel upserts doc
$userCnt = User::where("id",1)->count();
if( $userCnt ==0 ){
//////////record not exists
}else{
//////////record exists
}
注意::根据您的要求条件。
检查记录是否存在的有效方法必须使用 is_null 方法来检查查询。
下面的代码可能会有所帮助:
$user = User::where('email', '=', Input::get('email'));
if(is_null($user)){
//user does not exist...
}else{
//user exists...
}
很容易知道有没有记录
$user = User::where('email', '=', Input::get('email'))->get();
if(count($user) > 0)
{
echo "There is data";
}
else
echo "No data";
这是检查电子邮件是否存在于数据库中的简单代码
$data = $request->all(); $user = DB::table('User')->pluck('email')->toArray(); if(in_array($user,$data['email'])) { echo '现有电子邮件'; }