How to pass user data into a JSON file using Laravel one to one - laravel

I am having issues getting user data in a JSON file am using one to one relationship
this is my PostRequest Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class PostRequest extends Model
{
use HasFactory;
public function user(){
return $this->belongsTo(User::class, 'artisan_id');
}
}
User model
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laratrust\Traits\LaratrustUserTrait;
use App\Models\Verify;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Database\Eloquent\Model;
class User extends Authenticatable
{
use LaratrustUserTrait;
use HasFactory, Notifiable;
public function PostRequest(){
return $this->hasOne(PostRequest::class, 'artisan_id');
}
}
Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::select('artisan_id')->where('email', '=', $email)
->limit('1')
->orderBy('id', 'DESC')
->user();
return response()->json($contacts);
//}
}
}
if run the above controller I get this error msg
[14:09:51] LOG.error: Call to undefined method Illuminate\Database\Eloquent\Builder:: user() {"userId":15,"exception":{}
If I run this I get all data, buh den I need a specific data
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\PostRequest;
use App\Models\User;
class ChatController extends Controller
{
public function getMessages(){
return view('user/message'); //response()->json($contacts);
}
public function getContact(){
$email = Auth::user()->email;
$contacts = PostRequest::all();
return response()->json($contacts);
//}
}
}

Just try this query:
$email = Auth::user()->email;
$contacts = PostRequest::where('email', $email)->first()->user;
return response()->json($contacts);

Related

How to pass data from database to Mailable?

I know how to pass data to view but how do you pass data to a mailable? I'm also a bit confused on where to put the database call DB::select, in the controller or the mailable? So far I've tried this:
web.php:
Route::get('/test-email', 'App\Http\Controllers\TestMailController#test');
TestMailController.php:
<?php
namespace App\Http\Controllers;
use App\Mail\ContactMail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class TestMailController extends Controller
{
public function test()
{
return new ContactMail();
}
}
TestMail.php:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;
use phpDocumentor\Reflection\DocBlock\Tags\Var_;
class TestMail extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $data;
public function __construct()
{
$this->data = DB::select('select * from db_name');
}
public function build()
{
return $this->markdown('emails.testmail')->with('data', $data);
}
}
You need to use $this :
public function build()
{
return $this->markdown('emails.testmail')->with('data', $this->data);
}

Cannot access model using controller in Laravel

I create new controller and models using php artisan command. And I tried to access model using controller but I get Class 'Thankful' not found error.
Controller code:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Thankful;
class Thanks extends Controller
{
public function hello(){
$my_data = new Thankful;
$data = $my_data->my_model();
return view("thanks",compact('data'));
}
}
Model Code:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Thankful extends Model
{
public function my_model()
{
$data = "Thank You";
return $data;
}
}
The namespace of your Thankful model is incorrect:
<?php
namespace App\Http\Controllers;
use App\Thankful;
use Illuminate\Http\Request;
class Thanks extends Controller
{
public function hello ()
{
//
}
}

Class 'App\Http\Controllers\Post' not found in laravel-5.8

hi m trying to show data at index page but it says: Class 'App\Http\Controllers\Post' not found
controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class IndexController extends Controller
{
public function index()
{
$data = Post::all();
return view('index', compact('data'));
}
You need to add the following line:
use App\Post;
now your code should look like this:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
class IndexController extends Controller
{
public function index()
{
$data = Post::all();
return view('index', compact('data'));
}

I get the Object not found error while trying to output all users details from database

I am trying to out all users on my admin dashboard by parsing the result through to my route
Here is my controller;
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\User;
class AdminController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->middleware('notAdmin');
}
public function index(){
$user = User::all()->orderBy('id', 'desc')->paginate(100);
return view('admin-dashboard')->with('users', $users);
}
}
I get the "Method Illuminate\Database\Eloquent\Collection::orderBy does not exist." error
You have applied wrong query:
You don't need to add all() as you are using paginate
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\User;
class AdminController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->middleware('notAdmin');
}
public function index(){
$users = User::orderBy('id', 'desc')->paginate(100);
return view('admin-dashboard')->with('users', $users);
}
}

laravel 5 eloquent orm relationships get all records not working

Tables reletions
Category.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
public function getVideo(){
return $this->hasMany('App\Video','category_id','id')->where('categories.kat_name', '=', 'comedy');
}
}
PagesController.php(Controller)
namespace App\Http\Controllers;
use App\User;
use App\Category;
use App\Video;
use App\Http\Controllers\Controller;
class PagesController extends Controller
{
function getCategory($kategori_ad){
$myvideo = Category::all()->getVideo();
}
}
I want make this : SELECT * FROM categories join videos ON categories.id=videos.category_id AND categories.kat_name='animals' with orm
class Category extends Model {
public function getVideo(){
return $this->hasMany('App\Video','category_id','id');
}
}
class PagesController extends Controller {
function getCategory($kategori_ad){
$myvideo = Category::where('kat_name', '=', 'comedy')->with('getVideo')->get();
}
}
$myvideo = Category::with('getVideo')->get();

Resources