I have tables Users,departments,files and shareFiles. I want to write a query that when a user tries sending a file to another user, the share function should capture the title of the file and department of the user sending the file which would be saved in the shareFiles table.
id
, department_id
id
, title
, user_id
id
, name
title
, file
, department_id
, user_id
, sender
, to
Below is what i did in the share function
public function shareFile(Request $request)
{
$userfile = new UserFile();
$userfile->sender = \Auth::user()->username;
$userfile->to = $request->user;
$userfile->title = File::select('title')->where(['user_id' => \Auth::user()->id])
->orWhere('id','=','user_id')->get();
$userfile->department = DB::table('departments')->select('departments.name')
->join('users','departments.id','=','users.department_id')
->where(['users.id' => \Auth::user()->id])
->get();
$userfile->user_id = \Auth::user()->id;
$userfile->save();
Session::flash('message','File successfully shared !!');
return redirect('/hr/document');
}
Try this code:-
For title selection:
$file = File::select('title')->where(['user_id' => \Auth::user()->id]) ->orWhere('id','=','user_id')->first();
For Department:
$dept = DB::table('departments')->select('departments.name') ->join('users','departments.id','=','users.department_id') ->where(['users.id' => \Auth::user()->id]) ->first();
Note: You can also use value() and pluck() (in case if you need array of values) instead of select().
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.