Laravel DB::transaction() not recognized in controller - php

I want to use transactions in my controller, but when I typed in DB::transaction(), its not recognized by it, also the autocomplete doesn't show transaction() as a function inside DB. I'm new to laravel, any help would be appreciated.

Try using like this..
\DB::transaction();

Related

how to use DD() method in Laravel projects?

I know that for some it might be stupid or funny question (but I am newbie) but I need to find know how to properly use DD() method in laravel projects.
For example - I have got tasks to debug some code and functionality in my project (PHP laravel). And it always takes me for ever to find the exact file or folder or code where the problem is.
My mentor says to use DD() method to find things faster (but for learning purposes he didn't explain me a lot about how to actually use it and said to find out my self), but said that I should start with Route (we use backpack as well for our project). So after finding Route (custom.php file) which controller connects to my required route what should I do next? How do I implement dd() method (or as my mentor says dd('call here') method) to fast find what I should be looking for to solve my problem and complete my task? Where should I write this dd() and how should I write it?
Thank you for the answer in advance!
for example I have a:
public function create(): View
{
return view('xxxxxx. \[
//
//
\]);
}
and if I put dd() anywhere in the code, I get error message in my URL :(
first of all ,in Laravel we use dd() before return in order to read any variable.
in controller we often use two kinds of variables : collection(which we get its members via foreach) or singular variable (we get it via its name)for example:$var = 1; dd($var).
notice:
if you are using ajax response you will not be able to see dd() results in page ,you can see the result via network tab in your browser (if u inspect your page).
dd stands for "Dump and Die."
Laravel's dd() function can be defined as a helper function, which is used to dump a variable's contents to the browser and prevent the further script execution.
Example:
dd($users,$variable1,$var2);
You can use dd() in blade
#foreach($users as $user)
#dd($user)
OR
{{dd($user)}}
#endforeach
#dd($var1)
You can read this article, the have more example and comparison
https://shouts.dev/articles/laravel-dd-vs-dump-vs-vardump-vs-printr-with-example
As Laravel is following model-view-controller or MVC design pattern. First go to the route and check which controller is called in the URL with the related URL.
Then go to the controller. **dd**() function is basically a dump and die. you also can do this by **print** or **echo** function too.
Lets assume that I have a controller name ProductController where I have method name index.From where I need to show a list of products in a table.
// in controller
public function index()
{
$products = Products::all();
// here you think ,I need to check whether I am getting the output or
not.
dd( $products );
//Or echo $products;
return view ('product.list',compact('products'));
}
let's suppose you are getting everything but in view when you loop through the products you declare the wrong variable name or mistakenly do some spelling mistakes. and want to see the result.
In view just do the dd() method by the following way:
{{ dd($products) }}

How to call a function using GET Request in Yii2

I am trying to get a hang of Yii2 and learing it. I have now a quick question.
I have a function written in my ProductController.php called actionGetPhoneForCustomer with the parameter $product. The action calls another action within itself, that has an ActiveQuery in it. The query works great, the tests run where successful.
Now I want to have a simple GET request to call said function. However, it does not work properly. Am I writing the request wrong somehow? Below is the request I am trying to use and I always get a 404Error. There really is no page needed, it's just a simple echo that should be returned. Below is the request as I am writing it.
http://localhost:8080/myproductapp/web/index.phpr=product%2FgetPhoneForCustomer&product=Keyboard
And this is the action:
public function actionGetPhoneForCustomer($product) {
echo $this->getProductBySaleSatus($product);
}
What am I doing wrong here? Am I missing something in the URL? Any help would be greatly appreciated.

Laravel paginate() method is not working with the distinct() method

My Laravel code is something like this...
Cheque::distinct()->get(['cheque_no'])->paginate('25');
If possible I want to add sortByDesc('updated_at') also.
Please help me.
First off, I think you want
distinct('cheque_no')->get()
instead of
distinct()->get(['cheque_no'])
Then, either you use get or paginate
And you define the sorting at the end
So, the altogether ends up like this:
Cheque::distinct('cheque_no')->paginate(25)->sortByDesc('updated_at');

Magento2 - setData() For Added Fields

I have added a field(key) in table(quote_item) through module installation(InstallSchema) and in Api Code I am using the following code to add value for that. But its not adding the value to that field in DB.
//cartItemObject \Magento\Quote\Model\Quote\Item
$cartItemObject->setData("key", "value");
Can anyone please help me on this?
Before making the setData, did you start the model? If you are using factory you should do as follows:
$cartItemObject=$this->model->create(); // after this you would have access to the following methods getData(), setData(), etc
In any case if it still does not work I advise you to review this information for handling model in magento 2

simple cakephp problem

I know this is a really simple thing that I really should know but I'm trying to learn cakephp without having done much php before. I've been told thats a stupid idea, but I'm doing it for fun and so I'm doing it.
I want to pass an array from one controller action to another controllers action and then pass it to the view. I have:
sponges_controller.php
$info = $this->data;
$this->redirect(array('controller'=>'baths', 'action'=>'dashboard', $info));
baths_controller.php
function dashboard($info) {
$this->set('info', $info);
}
and then
<?php echo debug($info); ?>
in the view for dashboard.
I've tried various ways but can't make it work. All it does is print out Array()
Plz help me! :) Julia
You can't pass data that way from one controller to the other as far as I know, at most you can concat a string to the action, like an ID for view or editing.
If you want to pass the info you could try setting it in the SESSION variable in the following way:
$this->Session->write('Info', $info);
And in your other controller you can check for it:
$this->Session->read('Info');
It looks like cake will not let you pass an array into a controller action. I set up a simple example and I got an 'array to string conversion error'. Is there a specific reason why you aren't just posting the data to baths/dashboard? I can think of a workaround for your problem, but it is quite messy.
8vius's solution above will definitely work.
Here is another way, but using sessions is probably a lot better
$str = http_build_query($info);
$this->redirect('/baths/dashboard?'.$str);
So then in your baths/dashboard action, you will have access to your data using the php $_GET array.
So if you originally had this->data['name'] you can access it with $_GET['name']
I'm not sure about the passing data in different controllers but within the same controller we can do it just like a function call by writing something like this.
$this->function_name($info);
This will perfectly work as intended. I've not tried this type of data passing in different controllers function.

Categories