#php #laravel
#php #laravel
Вопрос:
это мой контроллер Excel
class ExcelController extends Controller
{
public function export(Request $request)
{
return Excel::store(new UserProductsExport, 'user_products'. $request->id .'.xlsx');
}
}
Мои изображения работают нормально, а затем я создал символическую ссылку artisan, изображения работают нормально.
Это код для загрузки изображения
public function submitAddProduct(Request $request){
$data = $request->validate([
'image' => ['required','image'],
'image_second' => ['required','image']
]);
// dd(request('image')->store('uploads','public'));
$imagePath = request('image')->store('uploads','public');
$image = Image::make(public_path("storage/{$imagePath}"));
$image->save();
$imagePath2 = request('image_second')->store('uploads','public');
$image2 = Image::make(public_path("storage/{$imagePath2}"));
$image2->save();
$dataVal = $request->all();
$dataVal['image'] = $imagePath;
$dataVal['image_second'] = $imagePath2;
// d3d($dataVal);
$d = Products::create($dataVal);
$id = $d->id;
if($id){
$arr = array('msg' => $id);
}
return Response()->json($arr);
}
Я хочу, чтобы то же самое произошло с Excel.
Это остальная часть кода Excel.
Мой класс UserProductsExport
class UserProductsExport implements FromQuery,WithHeadings
{
/**
* @return IlluminateSupportCollection
*/
public function query()
{
$matchThese = ['user_products.user_id' => Auth::user()->id, 'user_products.inquiry_flag' => 0];
return DB::table('user_products')
->orderBy('user_products.created_at')
->select(
'inquiries.inquiry_no','users.name as user','users.username as username',
'users.email','users.id as user_id','users.mobile','products.name as name',
'units.name as unit_name','subcategories.name as sub_name',
'user_products.quantity as qty','sizes.name as size_name',
'products.min_order as min_order'
)
->join('product_prices','user_products.product_price_id', '=', 'product_prices.id')
->join('sizes','sizes.id', '=', 'product_prices.size_id')
->join('products','products.id', '=', 'product_prices.products_id')
->join('units','products.units_id', '=', 'units.id')
->join('subcategories','products.subcategories_id', '=', 'subcategories.id')
->join('categories','subcategories.categories_id', '=', 'categories.id')
->join('users','user_products.user_id', '=', 'users.id')
->join('inquiries','inquiries.id', '=', 'user_products.inquiry_id')
->where($matchThese);
}
public function headings(): array
{
return [
'Inquiry No.','User','Username','Email','User ID',
'Mobile','Product Name','Unit Name','Subcategory Name',
'Quantity','Size','Min Order'
];
}
}
Excel создается в папке хранилища, но в моей общей папке символическая ссылка на хранилище не отображается.
Теперь мне нужно отправить его по почте.
public function userCartMailSend(Request $request)
{
// dd($request['data'][0]['email']);
Mail::to('')->send(new SendUserSubmitMail($request['data']));
return redirect()->route('user.inquiryCart', ['success' => 1]);
}
и SendUserSubmitMail.php
public function build()
{
// dd($this->data);
return $this->subject('Subject:User Cart Inquiry')->view('emails.sendUserSubmitMail')
->attach(storage_path('app/user_products'. Auth::user()->id .'.xlsx'), [
'as' => 'user products.xlsx',
'mime' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
])
->with('data', $this->data);
}
Извините, если это сбивает с толку, но актуальный вопрос:
Как мне загрузить его в папку загрузки в хранилище, и моя символическая ссылка должна показать это
Пожалуйста, помогите, спасибо