레코드 존재 여부 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
}
larabel uncalent에서는 기본값이 있습니다.exists()
method, 다음 예를 참조하십시오.
if (User::where('id', $user_id )->exists()) {
// your code...
}
가장 좋은 해결책 중 하나는firstOrNew
또는firstOrCreate
방법.이 문서에는 두 가지 모두에 대한 자세한 내용이 나와 있습니다.
if($user->isEmpty()){
// has no records
}
웅변은 컬렉션을 사용합니다.다음 링크를 참조하십시오.https://laravel.com/docs/5.4/eloquent-collections
라라벨 5.6.26v
프라이머리 키(이메일 또는 ID)를 사용하여 기존 레코드를 검색합니다.
$user = DB::table('users')->where('email',$email)->first();
그리고나서
if(!$user){
//user is not found
}
if($user){
// user found
}
"use DB"를 포함하면 테이블 이름 사용자는 위의 쿼리를 사용하여 사용자에게 복수화됩니다.
if (User::where('email', 'user@email.com')->first()) {
// It exists
} else {
// It does not exist
}
사용하다first()
,것은 아니다.count()
존재 여부만 확인하면 됩니다.
first()
1개의 일치를 체크하기 때문에 고속입니다만,count()
는 모든 일치를 카운트합니다.
요청된 이메일이 사용자 테이블에 있는지 확인합니다.
if (User::where('email', $request->email)->exists()) {
//email exists in user table
}
조금 늦었지만 사용하려는 사람에게 도움이 될 수 있습니다.User::find()->exists()
라라벨이 다른 행동을 보이면서 기록의 존재를 위해find()
그리고.where()
방법들.e-메일을 주된 열쇠로 하여 상황을 검토해 봅시다.
$result = User::find($email)->exists();
해당 이메일이 포함된 사용자 레코드가 있는 경우 해당 레코드는 반환됩니다.true
다만, 그 메일을 가지는 유저가 존재하지 않는 경우, 에러가 발생한다는 것은 혼란스러운 점입니다.
Call to a member function exists() on null.
하지만 이 경우는 다르다.where()
것.
$result = User::where("email", $email)->exists();
상술한 조항은 다음과 같다.true
기록이 존재하며false
기록이 존재하지 않는 경우.그래서 항상 사용하려고 노력하세요.where()
기록 유무를 위해서가 아니라find()
피하다NULL
에러입니다.
컨트롤러 내
$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
확인 중null
이내에if
문을 지정하면 Larabel이 쿼리가 종료된 직후에 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';
}
시도/실패할 수 있다
->get()은 빈 어레이를 반환한다.
$email = User::find($request->email);
If($email->count()>0)
<h1>Email exist, please make new email address</h1>
endif
심플하고 쾌적하며 이해하기 쉬운 검증 도구
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);
}
empty() 함수를 사용하여 이 문제를 해결했습니다.
$user = User::where('email', Input::get('email'))->get()->first();
//for example:
if (!empty($user))
User::destroy($user->id);
많은 해결책을 보셨지만 마법의 체크 구문은 다음과 같습니다.
$model = App\Flight::findOrFail(1);
$model = App\Flight::where('legs', '>', 100)->firstOrFail();
연관된 모형을 찾을 수 없는 경우 반응 404에서 예외가 자동으로 발생함 모형을 찾을 수 없는 경우 예외를 발생시킬 수 있습니다.이는 루트 또는 컨트롤러에서 특히 유용합니다.nail 메서드와 firstOrFail 메서드는 쿼리의 첫 번째 결과를 가져옵니다.단, 결과가 발견되지 않으면Illuminate\Database\Eloquent\ModelNotFoundException
던져질 것이다.
참고 자료: https://laravel.com/docs/5.8/eloquent#retrieving-single-models
테이블에 특정 전자 메일 주소가 있는지 확인합니다.
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('email'))->first();
return (count($user) > 0 ? 'Email Exist' : 'Email Not Exist');
같은 것을 실현하는 가장 간단한 방법은 다음과 같습니다.
$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!');
}
Larabel 6 또는 맨 위: 테이블 이름을 쓴 다음 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
메서드의 첫 번째 인수는 관련 테이블 내에서 레코드를 일의로 식별하는 열을 나열하고 두 번째 인수는 삽입 또는 업데이트할 값으로 구성됩니다.
Larabel upserts documents는 이쪽에서 확인하실 수 있습니다.
고유한 레코드를 삽입하려면 larabel 검증을 사용할 수 있습니다.
$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());
$userCnt = User::where("id",1)->count();
if( $userCnt ==0 ){
//////////record not exists
}else{
//////////record exists
}
주의: 요건에 따른 조건.
이것을 사용하여 진실 또는 거짓을 얻습니다.
$user = 사용자::where('email', '=', 입력::get('email')-> exists();
$user와 결과물이 필요한 경우 이 기능을 사용할 수 있습니다.
$user = 사용자::where('email', '=', 입력::get('email')->get();
이렇게 결과를 확인하고
if(count($user)>0){}
이런 지혜도 쓸 수 있고
$user = 사용자::where('email', '=', 입력::get('email');
if specuser-> spec(){ $user = $user-> get(); }
https://laraveldaily.com/dont-check-record-exists-methods-orcreate-ornew/에 도움이 될 것 같은 링크입니다.
레코드가 존재하는지 여부를 확인하는 효율적인 방법은 is_null 메서드를 사용하여 쿼리에 대해 확인해야 합니다.
다음 코드가 도움이 될 수 있습니다.
$user = User::where('email', '=', Input::get('email'));
if(is_null($user)){
//user does not exist...
}else{
//user exists...
}
언급URL : https://stackoverflow.com/questions/27095090/laravel-checking-if-a-record-exists
'source' 카테고리의 다른 글
curl_exec()은 항상 false를 반환합니다. (0) | 2022.09.18 |
---|---|
php의 최대 실행 시간을 늘리는 방법 (0) | 2022.09.18 |
PHP 문자열을 암호화 및 해독하려면 어떻게 해야 합니까? (0) | 2022.09.18 |
자바에서 cURL을 사용하는 방법 (0) | 2022.09.18 |
리액트 라우터의 링크 컴포넌트 밑줄을 없애는 방법 (0) | 2022.09.18 |